50个核心Pandas操作!

在学习过程中有找不到的问题,直接官网查找:https://pandas.pydata.org/icon-default.png?t=O83Ahttp://pandas

首先给出一个示例数据,是一些用户的账号信息,基于这些数据,咱们今天给出最常用,最重要的50个案例。

IDNameAgeSalaryStatus
101Alice2550000Active
102Bob3060000Inactive
103Charlie2245000Active
104David3575000Active
105Eva2855000Inactive

每个案例包括使用方式、示例、以及一段Python代码。

快速回到首页

目录

 

1. 创建DataFrame:使用字典创建2. 查看数据前几行(默认为前5行):head()3. 查看数据后几行(默认为后5行):tail()4. 查看数据基本信息:info()
5. 描述性统计信息:describe()6. 选择列:[ ]7. 选择多列:[ [ ] ]8. 选择行:loc[]
9. 选择特定行和列:loc[  ,  ]10. 条件选择(Filtering)11. 多条件选择12. 排序数据:sort_values()
13. 处理缺失值:dropna()14. 填充缺失值:fillna()15. 新增列16. 删除列:drop()
17. 重命名列:rename()18. 分组统计:groupby()19. 合并DataFrame:concat()20. 横向合并DataFrame:concat()
21. 合并DataFrame(基于键):merge()22. 透视表:pivot_table()23. 独热编码:get_dummies()24. 字符串处理
25. 日期时间处理26. 时间序列重采样27. 滑动窗口28. 绘制图表:plot()
29. 保存DataFrame到文件:to_csv()30. 从文件加载数据到DataFrame:read_csv()31. 使用apply函数对列进行操作32. 使用map函数进行值替换
33. 使用cut函数进行分箱处理34. 使用groupby和transform进行组内操作35. 使用astype进行数据类型转换36. 使用isin进行过滤
37. 使用duplicated和drop_duplicates处理重复值38. 使用nlargest和nsmallest获取最大和最小值39. 使用value_counts计算唯一值的频率40. 使用str.contains进行模糊匹配
41. 使用replace进行值替换:replace()42. 使用pivot进行数据透视:pivot()43. 使用merge时处理重复列名:merge()44. 使用at和iat快速访问元素:at()、iat()
45. 使用mask进行条件替换46. 使用query进行条件查询:query()47. 使用crosstab进行交叉表:crosstab()48. 使用explode展开列表:explode()
49. 使用agg进行多个聚合操作:agg()50. 使用pipe进行链式操作:pipe()

1. 创建DataFrame:使用字典创建

import pandas as pd

data = {'ID': [101, 102, 103, 104, 105],
        'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Age': [25, 30, 22, 35, 28],
        'Salary': [50000, 60000, 45000, 75000, 55000],
        'Status': ['Active', 'Inactive', 'Active', 'Active', 'Inactive']}

df = pd.DataFrame(data)

快速回到首页 

2. 查看数据前几行(默认为前5行):head()

df.head()

使用方式: 用于查看DataFrame的前几行,默认为前5行。

示例: 查看前3行数据。

df.head(3)

快速回到首页 

3. 查看数据后几行(默认为后5行):tail()

df.tail()

使用方式: 用于查看DataFrame的后几行,默认为后5行。

示例: 查看后3行数据。

df.tail(3)

快速回到首页 

4. 查看数据基本信息:info()

df.info()

使用方式: 提供DataFrame的基本信息,包括每列的非空值数量和数据类型。

示例: 查看数据信息。

df.info()

快速回到首页 

5. 描述性统计信息:describe()

df.describe()

使用方式: 提供DataFrame的描述性统计信息,包括均值、标准差、最小值、25%分位数、中位数(50%分位数)、75%分位数和最大值。

示例: 查看数值列的统计信息。

df.describe()

快速回到首页 

6. 选择列:[ ]

df['ColumnName']

使用方式: 通过列名选择DataFrame中的一列。

示例: 选择“Salary”列。

df['Salary']

快速回到首页 

7. 选择多列:[ [ ] ]

df[['Column1', 'Column2']]

使用方式: 通过列名列表选择DataFrame中的多列。

示例: 选择“Name”和“Age”列。

df[['Name', 'Age']]

快速回到首页 

8. 选择行:loc[]

df.loc[index]

使用方式: 通过索引标签选择DataFrame中的一行。

示例: 选择索引为2的行。

df.loc[2]

快速回到首页 

9. 选择特定行和列:loc[  ,  ]

df.loc[index, 'ColumnName']

使用方式: 通过索引标签和列名选择DataFrame中的特定元素。

示例: 选择索引为1的行的“Name”列的值。

df.loc[1, 'Name']

快速回到首页 

10. 条件选择(Filtering)

df[df['ColumnName'] > value]

使用方式: 使用条件过滤选择满足特定条件的行。

示例: 选择年龄大于25的行。

df[df['Age'] > 25]

快速回到首页 

11. 多条件选择

df[(df['Column1'] > value1) & (df['Column2'] == value2)]

使用方式: 使用逻辑运算符(&:与,|:或,~:非)结合多个条件进行过滤。

示例: 选择年龄大于25且状态为“Active”的行。

df[(df['Age'] > 25) & (df['Status'] == 'Active')]

快速回到首页 

12. 排序数据:sort_values()

df.sort_values(by='ColumnName', ascending=False)

使用方式: 根据指定列的值进行升序或降序排序。

示例: 按工资降序排序。

df.sort_values(by='Salary', ascending=False)

快速回到首页 

13. 处理缺失值:dropna()

df.dropna()

使用方式: 删除包含缺失值的行。

示例: 删除所有包含缺失值的行。

df.dropna()

快速回到首页 

14. 填充缺失值:fillna()

df.fillna(value)

使用方式: 用指定值填充缺失值。

示例: 用均值填充所有缺失值。

df.fillna(df.mean())

快速回到首页 

15. 新增列

df['NewColumn'] = values

使用方式: 新增一列,并为其赋值。

示例: 新增一列表示年龄是否大于30。

df['IsAbove30'] = df['Age'] > 30

快速回到首页 

16. 删除列:drop()

df.drop('ColumnName', axis=1)

使用方式: 删除指定列。

示例: 删除“Status”列。

df.drop('Status', axis=1)

快速回到首页 

17. 重命名列:rename()

df.rename(columns={'OldName': 'NewName'}, inplace=True)

使用方式: 重命名指定列。

示例: 将“ID”列重命名为“EmployeeID”。

df.rename(columns={'ID': 'EmployeeID'}, inplace=True)

快速回到首页 

18. 分组统计:groupby()

df.groupby('ColumnName').agg({'Column1': 'mean', 'Column2': 'sum'})

使用方式: 按照指定列进行分组,然后进行聚合统计。

示例: 按状态分组,计算平均年龄和总工资。

df.groupby('Status').agg({'Age': 'mean', 'Salary': 'sum'})

快速回到首页 

19. 合并DataFrame:concat()

pd.concat([df1, df2], axis=0)

使用方式: 沿着指定轴合并两个DataFrame。

示例: 垂直合并两个DataFrame。

pd.concat([df1, df2], axis=0)

快速回到首页 

20. 横向合并DataFrame:concat()

pd.concat([df1, df2], axis=1)

使用方式: 沿着列方向合并两个DataFrame。

示例: 横向合并两个DataFrame。

pd.concat([df1, df2], axis=1)

快速回到首页 

21. 合并DataFrame(基于键):merge()

pd.merge(df1, df2, on='KeyColumn', how='inner')

使用方式: 使用指定列进行合并,指定合并方式(内连接、左连接、右连接、外连接)。

示例: 使用“ID”列内连接两个DataFrame。

pd.merge(df1, df2, on='ID', how='inner')

快速回到首页 

22. 透视表:pivot_table()

pd.pivot_table(df, values='ValueColumn', index='IndexColumn', columns='ColumnToPivot', aggfunc='mean')

使用方式: 创建透视表,汇总数据。

示例: 创建一个透视表,计算不同状态下的平均工资。

pd.pivot_table(df, values='Salary', index='Status', aggfunc='mean')

快速回到首页 

23. 独热编码:get_dummies()

pd.get_dummies(df, columns=['CategoricalColumn'])

使用方式: 将分类变量转换为独热编码。

示例: 对“Status”列进行独热编码。

pd.get_dummies(df, columns=['Status'])

快速回到首页 

24. 字符串处理

df['StringColumn'].str.method()

使用方式: 对字符串列进行各种处理,如切片、替换等。

示例: 将“Name”列转换为大写。

df['Name'].str.upper()

快速回到首页 

25. 日期时间处理

df['DateTimeColumn'] = pd.to_datetime(df['DateTimeColumn'])
  • 重点说明 将字符串列转换为日期时间类型。

  • 示例: 将“Date”列转换为日期时间类型。

df['Date'] = pd.to_datetime(df['Date'])

快速回到首页 

26. 时间序列重采样

df.resample('D').sum()

使用方式: 对时间序列数据进行重新采样。

示例: 将数据按天重新采样并求和。

df.resample('D').sum()

快速回到首页 

27. 滑动窗口

df['Column'].rolling(window=size).mean()

使用方式: 计算滑动窗口的统计量,如均值。

示例: 计算“Salary”列的3天滑动平均值。

df['Salary'].rolling(window=3).mean()

快速回到首页 

28. 绘制图表:plot()

df.plot(x='Column1', y='Column2', kind='scatter')

使用方式: 使用内置的绘图功能绘制各种图表。

示例: 绘制散点图。

df.plot(x='Age', y='Salary', kind='scatter')

快速回到首页 

29. 保存DataFrame到文件:to_csv()

df.to_csv('filename.csv', index=False)

使用方式: 将DataFrame保存为CSV文件。

示例: 将DataFrame保存为CSV文件。

df.to_csv('employee_data.csv', index=False)

快速回到首页 

30. 从文件加载数据到DataFrame:read_csv()

df = pd.read_csv('filename.csv')

使用方式: 从文件中加载数据到DataFrame。

示例: 从CSV文件加载数据。

df = pd.read_csv('employee_data.csv')

快速回到首页 

31. 使用apply函数对列进行操作

df['NewColumn'] = df['Column'].apply(lambda x: x * 2)

使用方式: 使用apply函数对某列的每个元素进行操作,可传递自定义函数。

示例: 将“Age”列的每个元素乘以2。

df['DoubleAge'] = df['Age'].apply(lambda x: x * 2)

快速回到首页 

32. 使用map函数进行值替换

df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})

使用方式: 使用map函数根据字典或函数替换列中的值。

示例: 将“Status”列的值映射为1和0。

df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})

快速回到首页 

33. 使用cut函数进行分箱处理

df['AgeGroup'] = pd.cut(df['Age'], bins=[20, 30, 40, 50], labels=['20-30', '30-40', '40-50'])

使用方式: 使用cut函数将数值列分成不同的箱子,用标签表示。

示例: 将“Age”列分成年龄组。

df['AgeGroup'] = pd.cut(df['Age'], bins=[20, 30, 40, 50], labels=['20-30', '30-40', '40-50'])

快速回到首页 

34. 使用groupbytransform进行组内操作

df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')

使用方式: 使用groupbytransform在组内进行操作,并将结果广播到原始DataFrame。

示例: 计算每个年龄组的平均工资。

df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')

快速回到首页 

35. 使用astype进行数据类型转换

df['NewColumn'] = df['Column'].astype(float)

使用方式: 使用astype将列的数据类型转换为指定类型。

示例: 将“Age”列转换为浮点数类型。

df['Age'] = df['Age'].astype(float)

快速回到首页 

36. 使用isin进行过滤

df[df['Column'].isin(['value1', 'value2'])]

使用方式: 使用isin过滤包含在给定列表中的值的行。

示例: 选择“Name”列包含特定值的行。

df[df['Name'].isin(['Alice', 'Bob'])]

快速回到首页 

37. 使用duplicateddrop_duplicates处理重复值

df.duplicated(subset=['Column1', 'Column2'])
df.drop_duplicates(subset=['Column1', 'Column2'], keep='first')

使用方式: 使用duplicated检测重复值,使用drop_duplicates删除重复值。

示例: 查找并删除重复行。

df.duplicated(subset=['Name'])
df.drop_duplicates(subset=['Name'], keep='first')

快速回到首页 

38. 使用nlargestnsmallest获取最大和最小值

df.nlargest(5, 'ColumnName')
df.nsmallest(5, 'ColumnName')

使用方式: 使用nlargest获取最大值,使用nsmallest获取最小值。

示例: 获取工资最高的前5名和最低的前5名员工。

df.nlargest(5, 'Salary')
df.nsmallest(5, 'Salary')

快速回到首页 

39. 使用value_counts计算唯一值的频率

df['Column'].value_counts()

使用方式: 使用value_counts计算某列中每个唯一值的频率。

示例: 计算“Status”列中每个状态的数量。

df['Status'].value_counts()

快速回到首页 

40. 使用str.contains进行模糊匹配

df[df['Column'].str.contains('pattern', case=False, na=False)]

使用方式: 使用str.contains进行模糊匹配,可指定大小写敏感和处理缺失值。

示例: 选择“Name”列包含字母“A”的行。

df[df['Name'].str.contains('A', case=False, na=False)]

快速回到首页 

41. 使用replace进行值替换:replace()

df.replace({'OldValue': 'NewValue'})

使用方式: 使用replace替换DataFrame中的值。

示例: 将“Status”列中的“Active”替换为“ActiveStatus”。

df.replace({'Active': 'ActiveStatus'})

快速回到首页 

42. 使用pivot进行数据透视:pivot()

df.pivot(index='IndexColumn', columns='ColumnToPivot', values='ValueColumn')

使用方式: 使用pivot进行数据透视。

示例: 创建一个数据透视表。

df.pivot(index='ID', columns='Status', values='Salary')

快速回到首页 

43. 使用merge时处理重复列名:merge()

pd.merge(df1, df2, left_on='LeftColumn', right_on='RightColumn', suffixes=('_left', '_right'))

使用方式: 在使用merge时,处理两个DataFrame中相同列名的情况。

示例: 合并两个DataFrame,处理重复列名。

pd.merge(df1, df2, left_on='ID', right_on='ID', suffixes=('_left', '_right'))

快速回到首页 

44. 使用atiat快速访问元素:at()、iat()

df.at[index, 'ColumnName']
df.iat[index, columnIndex]

使用方式: 使用atiat快速访问DataFrame中的元素。

示例: 获取第2行的“Name”列的值。

df.at[1, 'Name']

快速回到首页 

45. 使用mask进行条件替换

df['NewColumn'] = df['Column'].mask(df['Condition'])

使用方式: 使用mask根据条件替换值。

示例: 根据“Salary”列的条件进行替换。

df['Bonus'] = df['Salary'].mask(df['Salary'] > 60000, 'HighBonus')

快速回到首页 

46. 使用query进行条件查询:query()

df.query('Column > value')

使用方式: 使用query进行条件查询。

示例: 查询“Age”大于25的行。

df.query('Age > 25')

快速回到首页 

47. 使用crosstab进行交叉表:crosstab()

pd.crosstab(df['Column1'], df['Column2'])

使用方式: 使用crosstab生成交叉表。

示例: 生成“Status”和“Age”之间的交叉表。

pd.crosstab(df['Status'], df['Age'])

快速回到首页 

48. 使用explode展开列表:explode()

df.explode('ListColumn')

使用方式: 使用explode展开包含列表的列。

示例: 展开“Hobbies”列的列表。

df.explode('Hobbies')

快速回到首页 

49. 使用agg进行多个聚合操作:agg()

df.groupby('GroupColumn').agg({'Column1': 'mean', 'Column2': ['min', 'max']})

使用方式: 使用agg同时进行多个聚合操作。

示例: 计算每个组的平均值、最小值和最大值。

df.groupby('Status').agg({'Salary': ['mean', 'min', 'max']})

快速回到首页 

50. 使用pipe进行链式操作:pipe()

df.pipe(func1).pipe(func2, arg1='value').pipe(func3)

使用方式: 使用pipe进行链式操作,将多个操作组合在一起。

示例: 使用pipe调用多个自定义函数。

df.pipe(func1).pipe(func2, arg1='value').pipe(func3)

快速回到首页

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪猪爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值