前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再见了!Pandas!!

再见了!Pandas!!

作者头像
Python编程爱好者
发布2024-04-12 15:52:26
990
发布2024-04-12 15:52:26
举报

那咱们今天把它的好兄弟,pandas的内容分享一拨。

先把pandas的官网给出来,有找不到的问题,直接官网查找:https://pandas.pydata.org/

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

ID

Name

Age

Salary

Status

101

Alice

25

50000

Active

102

Bob

30

60000

Inactive

103

Charlie

22

45000

Active

104

David

35

75000

Active

105

Eva

28

55000

Inactive

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

老规矩:大家伙如果觉得近期文章还不错!欢迎大家点个赞、转个发~

经过了几天的整理,内容已经是比较全面了,大家想要获取的。

规则照旧,文末获取PDF版本,那咱们开始吧~

50个超强Pandas操作

1. 创建DataFrame

  • 使用字典创建DataFrame
代码语言:javascript
复制
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. 查看数据前几行

代码语言:javascript
复制
df.head()

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

示例: 查看前3行数据。

代码语言:javascript
复制
df.head(3)

3. 查看数据后几行

代码语言:javascript
复制
df.tail()

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

示例: 查看后3行数据。

代码语言:javascript
复制
df.tail(3)

4. 查看数据基本信息

代码语言:javascript
复制
df.info()

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

示例: 查看数据信息。

代码语言:javascript
复制
df.info()

5. 描述性统计信息

代码语言:javascript
复制
df.describe()

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

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

代码语言:javascript
复制
df.describe()

6. 选择列

代码语言:javascript
复制
df['ColumnName']

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

示例: 选择“Salary”列。

代码语言:javascript
复制
df['Salary']

7. 选择多列

代码语言:javascript
复制
df[['Column1', 'Column2']]

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

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

代码语言:javascript
复制
df[['Name', 'Age']]

8. 选择行

代码语言:javascript
复制
df.loc[index]

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

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

代码语言:javascript
复制
df.loc[2]

9. 选择特定行和列

代码语言:javascript
复制
df.loc[index, 'ColumnName']

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

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

代码语言:javascript
复制
df.loc[1, 'Name']

10. 条件选择(Filtering)

代码语言:javascript
复制
df[df['ColumnName'] > value]

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

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

代码语言:javascript
复制
df[df['Age'] > 25]

11. 多条件选择

代码语言:javascript
复制
df[(df['Column1'] > value1) & (df['Column2'] == value2)]

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

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

代码语言:javascript
复制
df[(df['Age'] > 25) & (df['Status'] == 'Active')]

12. 排序数据

代码语言:javascript
复制
df.sort_values(by='ColumnName', ascending=False)

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

示例: 按工资降序排序。

代码语言:javascript
复制
df.sort_values(by='Salary', ascending=False)

13. 处理缺失值

代码语言:javascript
复制
df.dropna()

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

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

代码语言:javascript
复制
df.dropna()

14. 填充缺失值

代码语言:javascript
复制
df.fillna(value)

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

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

代码语言:javascript
复制
df.fillna(df.mean())

15. 新增列

代码语言:javascript
复制
df['NewColumn'] = values

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

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

代码语言:javascript
复制
df['IsAbove30'] = df['Age'] > 30

16. 删除列

代码语言:javascript
复制
df.drop('ColumnName', axis=1)

使用方式: 删除指定列。

示例: 删除“Status”列。

代码语言:javascript
复制
df.drop('Status', axis=1)

17. 重命名列

代码语言:javascript
复制
df.rename(columns={'OldName': 'NewName'}, inplace=True)

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

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

代码语言:javascript
复制
df.rename(columns={'ID': 'EmployeeID'}, inplace=True)

18. 分组统计

代码语言:javascript
复制
df.groupby('ColumnName').agg({'Column1': 'mean', 'Column2': 'sum'})

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

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

代码语言:javascript
复制
df.groupby('Status').agg({'Age': 'mean', 'Salary': 'sum'})

19. 合并DataFrame

代码语言:javascript
复制
pd.concat([df1, df2], axis=0)

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

示例: 垂直合并两个DataFrame。

代码语言:javascript
复制
pd.concat([df1, df2], axis=0)

20. 横向合并DataFrame

代码语言:javascript
复制
pd.concat([df1, df2], axis=1)

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

示例: 横向合并两个DataFrame。

代码语言:javascript
复制
pd.concat([df1, df2], axis=1)

21. 合并DataFrame(基于键)

代码语言:javascript
复制
pd.merge(df1, df2, on='KeyColumn', how='inner')

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

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

代码语言:javascript
复制
pd.merge(df1, df2, on='ID', how='inner')

22. 透视表

代码语言:javascript
复制
pd.pivot_table(df, values='ValueColumn', index='IndexColumn', columns='ColumnToPivot', aggfunc='mean')

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

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

代码语言:javascript
复制
pd.pivot_table(df, values='Salary', index='Status', aggfunc='mean')

23. 独热编码

代码语言:javascript
复制
pd.get_dummies(df, columns=['CategoricalColumn'])

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

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

代码语言:javascript
复制
pd.get_dummies(df, columns=['Status'])

24. 字符串处理

代码语言:javascript
复制
df['StringColumn'].str.method()

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

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

代码语言:javascript
复制
df['Name'].str.upper()

25. 日期时间处理

代码语言:javascript
复制
df['DateTimeColumn'] = pd.to_datetime(df['DateTimeColumn'])
  • 重点说明: 将字符串列转换为日期时间类型。
  • 示例: 将“Date”列转换为日期时间类型。
代码语言:javascript
复制
df['Date'] = pd.to_datetime(df['Date'])

26. 时间序列重采样

代码语言:javascript
复制
df.resample('D').sum()

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

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

代码语言:javascript
复制
df.resample('D').sum()

27. 滑动窗口

代码语言:javascript
复制
df['Column'].rolling(window=size).mean()

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

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

代码语言:javascript
复制
df['Salary'].rolling(window=3).mean()

28. 绘制图表

代码语言:javascript
复制
df.plot(x='Column1', y='Column2', kind='scatter')

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

示例: 绘制散点图。

代码语言:javascript
复制
df.plot(x='Age', y='Salary', kind='scatter')

29. 保存DataFrame到文件

代码语言:javascript
复制
df.to_csv('filename.csv', index=False)

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

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

代码语言:javascript
复制
df.to_csv('employee_data.csv', index=False)

30. 从文件加载数据到DataFrame

代码语言:javascript
复制
df = pd.read_csv('filename.csv')

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

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

代码语言:javascript
复制
df = pd.read_csv('employee_data.csv')

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

代码语言:javascript
复制
df['NewColumn'] = df['Column'].apply(lambda x: x * 2)

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

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

代码语言:javascript
复制
df['DoubleAge'] = df['Age'].apply(lambda x: x * 2)

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

代码语言:javascript
复制
df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})

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

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

代码语言:javascript
复制
df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})

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

代码语言:javascript
复制
df['AgeGroup'] = pd.cut(df['Age'], bins=[20, 30, 40, 50], labels=['20-30', '30-40', '40-50'])

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

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

代码语言:javascript
复制
df['AgeGroup'] = pd.cut(df['Age'], bins=[20, 30, 40, 50], labels=['20-30', '30-40', '40-50'])

34. 使用groupbytransform进行组内操作

代码语言:javascript
复制
df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')

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

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

代码语言:javascript
复制
df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')

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

代码语言:javascript
复制
df['NewColumn'] = df['Column'].astype(float)

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

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

代码语言:javascript
复制
df['Age'] = df['Age'].astype(float)

36. 使用isin进行过滤

代码语言:javascript
复制
df[df['Column'].isin(['value1', 'value2'])]

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

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

代码语言:javascript
复制
df[df['Name'].isin(['Alice', 'Bob'])]

37. 使用duplicateddrop_duplicates处理重复值

代码语言:javascript
复制
df.duplicated(subset=['Column1', 'Column2'])
df.drop_duplicates(subset=['Column1', 'Column2'], keep='first')

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

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

代码语言:javascript
复制
df.duplicated(subset=['Name'])
df.drop_duplicates(subset=['Name'], keep='first')

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

代码语言:javascript
复制
df.nlargest(5, 'ColumnName')
df.nsmallest(5, 'ColumnName')

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

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

代码语言:javascript
复制
df.nlargest(5, 'Salary')
df.nsmallest(5, 'Salary')

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

代码语言:javascript
复制
df['Column'].value_counts()

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

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

代码语言:javascript
复制
df['Status'].value_counts()

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

代码语言:javascript
复制
df[df['Column'].str.contains('pattern', case=False, na=False)]

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

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

代码语言:javascript
复制
df[df['Name'].str.contains('A', case=False, na=False)]

41. 使用replace进行值替换

代码语言:javascript
复制
df.replace({'OldValue': 'NewValue'})

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

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

代码语言:javascript
复制
df.replace({'Active': 'ActiveStatus'})

42. 使用pivot进行数据透视

代码语言:javascript
复制
df.pivot(index='IndexColumn', columns='ColumnToPivot', values='ValueColumn')

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

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

代码语言:javascript
复制
df.pivot(index='ID', columns='Status', values='Salary')

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

代码语言:javascript
复制
pd.merge(df1, df2, left_on='LeftColumn', right_on='RightColumn', suffixes=('_left', '_right'))

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

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

代码语言:javascript
复制
pd.merge(df1, df2, left_on='ID', right_on='ID', suffixes=('_left', '_right'))

44. 使用atiat快速访问元素

代码语言:javascript
复制
df.at[index, 'ColumnName']
df.iat[index, columnIndex]

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

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

代码语言:javascript
复制
df.at[1, 'Name']

45. 使用mask进行条件替换

代码语言:javascript
复制
df['NewColumn'] = df['Column'].mask(df['Condition'])

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

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

代码语言:javascript
复制
df['Bonus'] = df['Salary'].mask(df['Salary'] > 60000, 'HighBonus')

46. 使用query进行条件查询

代码语言:javascript
复制
df.query('Column > value')

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

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

代码语言:javascript
复制
df.query('Age > 25')

47. 使用crosstab进行交叉表

代码语言:javascript
复制
pd.crosstab(df['Column1'], df['Column2'])

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

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

代码语言:javascript
复制
pd.crosstab(df['Status'], df['Age'])

48. 使用explode展开列表

代码语言:javascript
复制
df.explode('ListColumn')

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

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

代码语言:javascript
复制
df.explode('Hobbies')

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

代码语言:javascript
复制
df.groupby('GroupColumn').agg({'Column1': 'mean', 'Column2': ['min', 'max']})

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

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

代码语言:javascript
复制
df.groupby('Status').agg({'Salary': ['mean', 'min', 'max']})

50. 使用pipe进行链式操作

代码语言:javascript
复制
df.pipe(func1).pipe(func2, arg1='value').pipe(func3)

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

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

代码语言:javascript
复制
df.pipe(func1).pipe(func2, arg1='value').pipe(func3)

好了,这就是今天分享的全部内容。

对于初学者,我建议可以花几个小时甚至再长点时间,一个一个的过一下,有一个整体的理解。

之后在实际的使用中,就会方便很多。

对于老coder,应该扫一眼就ok了。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-12,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Johngo学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 50个超强Pandas操作
    • 1. 创建DataFrame
      • 2. 查看数据前几行
        • 3. 查看数据后几行
          • 4. 查看数据基本信息
            • 5. 描述性统计信息
              • 6. 选择列
                • 7. 选择多列
                  • 8. 选择行
                    • 9. 选择特定行和列
                      • 10. 条件选择(Filtering)
                        • 11. 多条件选择
                          • 12. 排序数据
                            • 13. 处理缺失值
                              • 14. 填充缺失值
                                • 15. 新增列
                                  • 16. 删除列
                                    • 17. 重命名列
                                      • 18. 分组统计
                                        • 19. 合并DataFrame
                                          • 20. 横向合并DataFrame
                                            • 21. 合并DataFrame(基于键)
                                              • 22. 透视表
                                                • 23. 独热编码
                                                  • 24. 字符串处理
                                                    • 25. 日期时间处理
                                                      • 26. 时间序列重采样
                                                        • 27. 滑动窗口
                                                          • 28. 绘制图表
                                                            • 29. 保存DataFrame到文件
                                                              • 30. 从文件加载数据到DataFrame
                                                                • 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进行值替换
                                                                                      • 42. 使用pivot进行数据透视
                                                                                        • 43. 使用merge时处理重复列名
                                                                                          • 44. 使用at和iat快速访问元素
                                                                                            • 45. 使用mask进行条件替换
                                                                                              • 46. 使用query进行条件查询
                                                                                                • 47. 使用crosstab进行交叉表
                                                                                                  • 48. 使用explode展开列表
                                                                                                    • 49. 使用agg进行多个聚合操作
                                                                                                      • 50. 使用pipe进行链式操作
                                                                                                      领券
                                                                                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                                                                                                      http://www.vxiaotou.com