欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > Python数据分析库 Pandas 四十个高频操作!!!

Python数据分析库 Pandas 四十个高频操作!!!

2025/11/8 2:35:29 来源:https://blog.csdn.net/qq_70350287/article/details/148630533  浏览:    关键词:Python数据分析库 Pandas 四十个高频操作!!!

1. 读取数据

import pandas as pd
df = pd.read_csv('data.csv')
  • 也可以使用 read_excelread_jsonread_sqlread_parquet 等。


2. 查看数据基本信息

df.head()        # 查看前5行
df.tail()        # 查看后5行
df.info()        # 数据类型与缺失信息
df.describe()    # 数值型列的统计摘要

3. 选择行列

df['列名']                   # 选择单列
df[['列1', '列2']]           # 选择多列
df.iloc[0:3]                # 通过位置选取行
df.loc[df['列名'] > 100]     # 条件筛选

4. 缺失值处理

df.isna().sum()             # 每列缺失值数量
df.dropna()                 # 删除含缺失值的行
df.fillna(0)                # 填充缺失值

5. 数据排序

df.sort_values(by='列名', ascending=False)

6. 新增列 / 修改列

df['新列'] = df['列1'] + df['列2']         # 新增列
df['列1'] = df['列1'].apply(lambda x: x*2)  # 修改列

7. 分组聚合(groupby)

df.groupby('列名')['数值列'].mean()          # 求平均
df.groupby(['列1', '列2']).agg({'值': 'sum'})  # 多重分组

8. 去重

df.drop_duplicates()             # 删除重复行
df.drop_duplicates(subset='列名')  # 根据某列去重

9. 合并与连接

pd.concat([df1, df2])                # 纵向拼接
pd.merge(df1, df2, on='id')          # 横向关联(类SQL的join)

10. 导出数据

df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', index=False)

11. 多格式读取

df_csv = pd.read_csv('data.csv', sep=';', encoding='utf-8')  # 自定义分隔符、编码
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet2')   # 指定工作表
df_json = pd.read_json('data.json', orient='records')        # 控制 JSON 解析方式

12. 条件读取(跳过行、指定列)

df = pd.read_csv('data.csv', skiprows=3, usecols=['col1', 'col3'])  # 跳过前3行、选特定列

13. 导出增强

df.to_csv('output.csv', sep='|', na_rep='-', index=False)  # 自定义分隔符、缺失值填充
df.to_excel('output.xlsx', sheet_name='Result', freeze_panes=(1,1))  # 冻结首行首列

14. 扩展预览

df.sample(3)          # 随机选3行预览(避免首尾偏差)
df.head(10).T         # 转置前10行,适合列多的场景

15. 深度信息校验

df.dtypes.value_counts()  # 各数据类型的列数统计
df.memory_usage(deep=True)  # 详细内存占用(含对象列)

16. 唯一值与频率

df['col'].unique()       # 列唯一值
df['col'].value_counts(normalize=True)  # 频率占比(百分比)

17. 索引重塑

df.set_index('date_col', drop=True, inplace=True)  # 设日期列为索引
df.reset_index(drop=False)  # 还原索引为普通列

18. 切片进阶(标签 + 位置)

df.loc['2023-01-01':'2023-01-10', 'col1':'col3']  # 标签切片(日期/字符串索引)
df.iloc[::5, [0, 2]]  # 每5行取1行,选第0、2列

19. 批量重命名

df.rename(columns=lambda x: x.lower().replace(' ', '_'), inplace=True)  # 列名标准化

20. 智能缺失填充

df['col'] = df['col'].fillna(df['col'].median())  # 中位数填充(替代固定值)
df.interpolate(method='linear', limit_direction='both')  # 线性插值填充

21. 异常值检测(IQR 法)

Q1, Q3 = df['col'].quantile([0.25, 0.75])
IQR = Q3 - Q1
df = df[(df['col'] >= Q1 - 1.5*IQR) & (df['col'] <= Q3 + 1.5*IQR)]  # 过滤异常值

22. 缺失值可视化(辅助分析)

import missingno as msno
msno.matrix(df)  # 缺失值矩阵图(需安装 missingno)

23. 矢量化运算(替代 apply)

df['new_col'] = df['col1'] * 2 + df['col2'].abs()  # 纯矢量化,效率更高

24. 时间序列转换

df['date'] = pd.to_datetime(df['date'], format='%Y/%m/%d')  # 强制转换格式
df['month'] = df['date'].dt.month_name()  # 提取月份名称

25. 类别型数据处理

df['cat_col'] = df['cat_col'].astype('category')  # 转换为类别类型(节省内存)
df['cat_col'] = df['cat_col'].cat.reorder_categories(['A', 'B', 'C'], ordered=True)  # 自定义顺序

26. 多指标聚合

df.groupby('category')['value'].agg(['mean', 'median', 'std'])  # 多统计量
df.groupby('category').agg(min_val=('value', 'min'), max_val=('value', 'max')
)  # 自定义列名

27. 滚动聚合(时间窗口)

df.set_index('date')['value'].rolling(window=7).mean()  # 7天滚动平均

28. 分组过滤

df.groupby('category').filter(lambda x: len(x) > 10)  # 保留分组长度>10的组

29. 多表智能合并

df_merged = pd.merge(df1, df2, on='id', how='outer', indicator=True)  # 外连接+来源标记
df_merged.query('_merge == "both"')  # 筛选仅共同存在的记录

30. 按索引拼接

df_concat = pd.concat([df1, df2], axis=1, join='inner')  # 按索引横向拼接(取交集)

31. 合并进度监控(大数据场景)

from tqdm import tqdm
tqdm.pandas()
df_merged = df1.progress_merge(df2, on='id')  # 显示合并进度条(需安装 tqdm)

32. 批量行处理(替代 for 循环)

df['new_col'] = np.where(df['col'] > 0, 'Positive', 'Negative')  # 矢量化条件判断

33. 迭代器模式(处理超大文件)

for chunk in pd.read_csv('large.csv', chunksize=1000):process(chunk)  # 分块处理,避免内存爆炸

34. 数据透视表

pd.pivot_table(df, values='value', index='category', columns='date', aggfunc='sum')

35. 逆透视(宽表转长表)

df_melted = df.melt(id_vars=['id', 'category'], var_name='date', value_name='value')

36. 延迟计算(Polars 风格,Pandas 2.0+)

df = pd.read_csv('data.csv', engine='pyarrow')  # 使用 Arrow 引擎加速
df = df.astype({'col': 'int32'})  # 缩小数据类型(如 int64→int32)

37. 代码调试(查看中间步骤)

def process(df):df = df.query('col > 0')df = df.assign(new_col=df['col'] * 2)return df.pipe(print, "处理后前5行:")  # 管道中插入调试

38. 内存优化报告

def df_mem_report(df):print(df.info(memory_usage='deep'))return df.convert_dtypes()  # 自动转换为更高效的类型
df = df_mem_report(df)

39. 快速统计可视化(一行代码)

df['col'].plot(kind='hist', bins=30, title='分布')  # 直接生成直方图(需 matplotlib)

40. 关联分析(热力图前置)

corr = df.select_dtypes(include='number').corr()  # 数值列相关系数矩阵
corr.style.background_gradient(cmap='coolwarm')  # 可视化热力图(Notebook 中)

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词