掌握Pandas的99个神奇用法,助你成为数据分析大师!

451 阅读2分钟

这里是废话

欢迎来到数据分析的魔幻世界!如果你渴望掌握一种强大而灵活的Python数据处理工具,那么Pandas绝对是你的不二之选。Pandas是Python中最受欢迎的数据分析库之一,它为数据科学家和分析师们提供了丰富的数据操作功能,使得数据清洗、转换和分析变得轻而易举。

在本文中,我们将为你呈现99个常用的Pandas用法,涵盖数据读取、数据处理、数据可视化以及数据转换等方面的技巧。无论你是数据分析的菜鸟还是经验丰富的老鸟,这些Pandas用法都能为你的工作带来全新的启示和效率提升。让我们一起踏上这场奇妙的Pandas探险之旅吧!

Pandas的99个用法

  1. 导入 Pandas 库:import pandas as pd
  2. 创建一个 DataFrame:df = pd.DataFrame(data)
  3. 查看 DataFrame 的前几行:df.head()
  4. 查看 DataFrame 的后几行:df.tail()
  5. 查看 DataFrame 的基本统计信息:df.describe()
  6. 查看 DataFrame 的列信息:df.columns
  7. 查看 DataFrame 的行数和列数:df.shape
  8. 选择单列数据:df['column_name']
  9. 选择多列数据:df[['col1', 'col2']]
  10. 选择特定行:df.iloc[row_index]
  11. 过滤行数据:df[df['column_name'] > value]
  12. 使用逻辑运算符过滤行数据:df[(df['col1'] > 10) & (df['col2'] < 50)]
  13. 排序数据:df.sort_values(by='column_name', ascending=False)
  14. 添加新列:df['new_column'] = data
  15. 删除列:df.drop('column_name', axis=1, inplace=True)
  16. 缺失值处理:df.dropna(), df.fillna(value)
  17. 分组操作:df.groupby('column_name').aggregate_function()
  18. DataFrame 的合并:pd.concat([df1, df2])
  19. DataFrame 的合并(按指定列):pd.merge(df1, df2, on='common_column')
  20. 重命名列名:df.rename(columns={'old_name': 'new_name'}, inplace=True)
  21. 将列数据类型转换为其他类型:df['column_name'] = df['column_name'].astype(new_type)
  22. 使用 apply 函数:df['new_column'] = df['column_name'].apply(function)
  23. 使用 lambda 函数:df['new_column'] = df['column_name'].apply(lambda x: x * 2)
  24. 将字符串列拆分为多列:df['new_column'] = df['column_name'].str.split(' ', expand=True)
  25. 将列转换为日期时间类型:df['date_column'] = pd.to_datetime(df['date_column'])
  26. 设置索引列:df.set_index('column_name', inplace=True)
  27. 重置索引:df.reset_index(inplace=True)
  28. 数据的透视表:pd.pivot_table(df, values='value_column', index='index_column', columns='column_name')
  29. 使用条件逻辑创建新列:df['new_column'] = np.where(condition, value_if_true, value_if_false)
  30. 检查重复行:df.duplicated()
  31. 删除重复行:df.drop_duplicates(inplace=True)
  32. 查找缺失值:df.isnull()
  33. 拼接字符串列:df['new_column'] = df['col1'] + ' ' + df['col2']
  34. 统计每列的唯一值:df['column_name'].value_counts()
  35. 使用 applymap 函数:df = df.applymap(function)
  36. 使用 map 函数:df['new_column'] = df['column_name'].map(mapping_dict)
  37. 替换值:df.replace(old_value, new_value, inplace=True)
  38. 计算累计和:df['cumulative_sum'] = df['column_name'].cumsum()
  39. 数据填充:df['column_name'].fillna(method='ffill', inplace=True)
  40. 绘制柱状图:df['column_name'].plot(kind='bar')
  41. 绘制折线图:df['column_name'].plot(kind='line')
  42. 绘制散点图:df.plot(x='col1', y='col2', kind='scatter')
  43. 绘制箱线图:df.boxplot(column='column_name')
  44. 绘制直方图:df['column_name'].hist()
  45. 绘制核密度图:df['column_name'].plot(kind='kde')
  46. DataFrame 的转置:df.T
  47. 使用 loc 进行标签定位:df.loc[row_label, column_label]
  48. 使用 iloc 进行位置定位:df.iloc[row_index, col_index]
  49. 将 DataFrame 导出为 CSV 文件:df.to_csv('file.csv', index=False)
  50. 将 DataFrame 导出为 Excel 文件:df.to_excel('file.xlsx', index=False)
  51. 读取 CSV 文件:pd.read_csv('file.csv')
  52. 读取 Excel 文件:pd.read_excel('file.xlsx')
  53. 分位数计算:df['column_name'].quantile(q=0.25)
  54. 使用 pd.cut 对数据进行分箱:df['bin'] = pd.cut(df['column_name'], bins=3)
  55. 删除行:df.drop(index=row_index, inplace=True)
  56. 设置数据类型并跳过错误:pd.to_numeric(df['column_name'], errors='coerce')
  57. 将列数据转换为分类类型:df['column_name'] = df['column_name'].astype('category')
  58. 数据采样:df.sample(n=5)
  59. 使用 groupby 和 agg 进行多列汇总:df.groupby('column_name').agg({'col1': 'sum', 'col2': 'mean'})
  60. 使用 cut 和 qcut 划分数据:pd.cut(df['column_name'], bins=[0, 25, 50, 75, 100]), pd.qcut(df['column_name'], q=4)
  61. 交换列的位置:df[['col2', 'col1', 'col3']]
  62. 将 DataFrame 转换为列表:df.values.tolist()
  63. 使用 pd.get_dummies 进行独热编码:pd.get_dummies(df['column_name'])
  64. 多索引 DataFrame 的创建:df = pd.DataFrame(data, index=[['A', 'A', 'B', 'B'], [1, 2, 1, 2]])
  65. 多索引 DataFrame 的选择:df.loc['A'], df.loc['A', 1]
  66. 使用 diff 计算一阶差分:df['column_name'].diff()
  67. 使用 shift 计算数据平移:df['column_name'].shift(1)
  68. 判断元素是否在列表中:df['column_name'].isin([val1, val2])
  69. 使用 eval 计算表达式:df.eval('new_column = col1 + col2', inplace=True)
  70. 使用 memory_usage 查看 DataFrame 内存占用:df.memory_usage(deep=True)
  71. 通过字典创建 DataFrame:data = {'col1': [val1, val2], 'col2': [val3, val4]}, df = pd.DataFrame(data)
  72. 使用 isin 进行过滤:df[df['column_name'].isin([val1, val2])]
  73. 重置索引并删除旧索引:df.reset_index(drop=True, inplace=True)
  74. 将字符串转换为小写/大写:df['column_name'].str.lower(), df['column_name'].str.upper()
  75. 将列数据转换为数值类型(带千位分隔符):df['column_name'] = df['column_name'].str.replace(',', '').astype(int)
  76. 使用 to_dict 将 DataFrame 转换为字典:df.to_dict()
  77. 使用 value_counts 统计多列的唯一组合:df.groupby(['col1', 'col2']).size()
  78. 使用 filter 过滤列:df.filter(like='substring')
  79. 使用 idxmax 和 idxmin 找到最大/最小值所在的索引:df['column_name'].idxmax(), df['column_name'].idxmin()
  80. 使用 merge_asof 进行最近匹配合并:pd.merge_asof(df1, df2, on='column_name', direction='nearest')
  81. 使用 rank 给数据排名:df['column_name'].rank()
  82. 使用 iterrows 迭代 DataFrame 的行:for index, row in df.iterrows():
  83. 使用 nlargest 和 nsmallest 找到前 N 大/小的值:df['column_name'].nlargest(5), df['column_name'].nsmallest(5)
  84. 使用 cut 将连续变量划分为离散区间:df['bin'] = pd.cut(df['column_name'], bins=5, labels=['Very Low', 'Low', 'Medium', 'High', 'Very High'])
  85. 使用 mask 替换满足条件的值:df['column_name'] = df['column_name'].mask(df['column_name'] < 0, 0)
  86. 使用 explode 拆分包含列表的列:df['column_name'].explode()
  87. 使用 pop 删除并返回列:new_column = df.pop('column_name')
  88. 将 DataFrame 保存为 HDF5 文件:df.to_hdf('data.h5', key='df_key')
  89. 将 DataFrame 保存为 SQL 数据库表:df.to_sql('table_name', con=engine, if_exists='append')
  90. 使用 replace 替换字符串:df['column_name'].replace('old_str', 'new_str', inplace=True)
  91. 使用 eval 进行条件表达式计算:df.eval('new_column = (col1 + col2) if col1 > 10 else (col1 - col2)', inplace=True)
  92. 使用 at 和 iat 访问单个元素:df.at[row_label, col_label], df.iat[row_index, col_index]
  93. 使用 merge 和 suffixes 处理列名冲突:pd.merge(df1, df2, on='common_column', suffixes=('_left', '_right'))
  94. 使用 style 自定义 DataFrame 的样式:df.style.format({'column_name': "{:.2f}"})
  95. 使用 pivot_table 创建多级数据透视表:pd.pivot_table(df, values='value_column', index=['index_col1', 'index_col2'], columns='column_name')
  96. 使用 to_clipboard 将 DataFrame 复制到剪贴板:df.to_clipboard()
  97. 使用 slice 函数获取部分数据:df.slice(start='2023-01-01', end='2023-12-31')
  98. 使用 clip 截取数据范围:df['column_name'].clip(lower=min_value, upper=max_value, inplace=True)
  99. 使用 memory_usage 查看 DataFrame 列内存使用情况:df.memory_usage(deep=True)

这里是结束语

恭喜你完成了这场Pandas探险之旅!希望在这99个神奇的Pandas用法中,你找到了对解决实际数据问题的新思路和灵感。Pandas的强大功能使得数据分析变得轻松愉悦,而你所学到的技巧将在未来的数据冒险中助你一臂之力。

在掌握Pandas的路上,不断实践和挑战是必不可少的。通过不断运用这些技巧,你将更加熟练地驾驭数据,并能从海量信息中提取有价值的见解。无论是商业决策、科学研究还是社会分析,Pandas都将成为你最忠实的助手。

愿你在数据领域的航程中越走越远,发现更多未知的数据宝藏。期待在未来与你再度相会,探讨更多关于数据分析的精彩内容。祝你在数据之海中驶向更广阔的未来,成为真正的数据分析大师!