江苏省网站建设_网站建设公司_自助建站_seo优化
2025/12/22 10:36:29 网站建设 项目流程

原文:https://www.51cto.com/article/832323.html

一、 IO 操作:数据的输入与输出

这是数据处理的起点与终点。除了 CSV,掌握二进制格式(如 Parquet)能显著提升大数据量的读写效率。

1. pd.read_csv() / pd.read_parquet()

用途:读取数据。read_csv 是标配,但对于GB级别以上的数据,强烈推荐使用 read_parquet,体积更小,速度快 10 倍以上。

技巧:使用 chunksize 参数分块读取超大文件。

2. df.to_csv() / df.to_excel()

用途:数据落地。

技巧:设置 index=False 避免保存无意义的索引列;使用 float_format='%.2f' 控制浮点精度。

3. df.to_pickle()

用途:序列化保存。完美保留 DataFrame 的数据类型(如 Categorical),读取速度极快,适合作为中间存储格式。

4. pd.DataFrame.from_dict()

用途:从字典构建 DataFrame。

场景:爬虫数据入库或 API 响应数据解析时非常常用。

二、 数据预览

在进行任何复杂操作前,必须先了解数据的全貌。

5. df.head() / df.tail()

用途:查看头尾数据。不要只看前 5 行,偶尔看看 tail 能发现文件末尾的异常(如汇总行)。

6. df.info()

用途:查看内存占用、非空计数和字段类型。这是检查 NaN 值和数据类型转换的第一步。

7. df.describe()

用途:快速统计描述。

技巧:使用 include='all' 或 include=['O'] 来查看分类变量的统计信息(如唯一值数量)。

8. df.shape

用途:返回元组 (rows, columns),快速确认数据维度。

9. df.dtypes

用途:检查每一列的数据类型。

10. df.value_counts()

用途:分类统计。

技巧:配合 normalize=True 直接查看占比,配合 dropna=False 查看缺失值的分布。

三、 数据清洗

现实世界的数据往往是“脏”的,这部分函数是数据工程师使用最高频的工具。

11. df.dropna()

用途:删除缺失值。

参数:thresh=n 可以保留至少有 n 个非空值的行,比单纯的 how='any' 更灵活。

12. df.fillna()

用途:填充缺失值。

技巧:除了填充固定值,还可以使用 method='ffill'(前向填充)处理时间序列数据。

13. df.drop_duplicates()

用途:去重。

参数:subset=['col1', 'col2'] 可指定根据特定列去重,keep='last' 保留最新记录。

14. df.astype()

用途:强制类型转换。

技巧:将高基数的字符串列转换为 'category' 类型,可节省高达 90% 的内存。

15. df.rename()

用途:重命名列名或索引。

代码:df.rename(columns={'old_name': 'new_name'}, inplace=True)。

16. df.replace()

用途:值替换。支持字典映射替换,比 apply 更快。

四、 筛选与索引:精准定位

Pandas 的核心灵魂在于其强大的索引系统。

17. df.loc[]

用途:基于标签(Label)的索引。

场景:df.loc[df['age'] > 25, ['name', 'salary']]。

18. df.iloc[]

用途:基于位置(Integer)的索引。

场景:df.iloc[:10, :3] 切片前10行、前3列。

19. df.query()

用途:SQL 风格的字符串查询。

优势:当筛选条件非常复杂时,query 语法比布尔索引更易读。

代码:df.query("age > 25 and department == 'Sales'")。

20. df.isin()

用途:判断值是否存在于列表中,常用于多值筛选。

21. df.filter()

用途:根据列名或索引名筛选。

参数:支持 regex 正则表达式匹配列名,非常强大。

五、 高级变换与特征工程

这是区分新手与专家的分水岭。

22. df.apply()

用途:沿轴应用函数。

注意:apply 循环效率较低,如果逻辑简单,优先使用 Pandas 内置的向量化函数。

23. df.map()

用途:Series 专用的映射方法,常用于数据字典编码转换。

24. df.sort_values()

用途:排序。

参数:ascending=[True, False] 可对多列进行不同方向的排序。

25. df.set_index() / df.reset_index()

用途:索引管理。在 TimeSeries 分析中,通常将时间列 Set 为 Index。

26. df.drop()

用途:删除行或列。需指定 axis=1 删除列。

27. pd.cut() / pd.qcut()

用途:分箱(Binning)。

区别:cut 按数值间隔切分(等宽),qcut 按分位数切分(等频)。

28. str 访问器

用途:处理字符串列。

常用:df['col'].str.contains(), df['col'].str.split(), df['col'].str.replace()。

六、 统计与聚合

将数据从“明细表”变为“汇总表”。

29. df.groupby()

用途:分组。Pandas 的核心功能,遵循 Split-Apply-Combine 模式。

30. df.agg()

用途:聚合。

技巧:可以对不同列应用不同的聚合函数:df.groupby('dept').agg({'salary': 'mean', 'age': 'max'})。

31. pd.pivot_table()

用途:数据透视表。Excel 透视表的 Python 复刻版,支持多级索引汇总。

32. pd.crosstab()

用途:交叉表。计算分组频率(频数统计)时的快捷方式。

33. df.nlargest() / df.nsmallest()

用途:快速找出最大/最小的 Top N 记录,比先 sort 再 head 效率更高。

七、 数据合并

处理多表关联时的必备技能。

34. pd.merge()

用途:基于键(Key)的连接,类似于 SQL 的 JOIN。

参数:how='left'/'inner'/'outer', on='key'。

35. pd.concat()

用途:物理拼接。通常用于将结构相同的多个 DataFrame 上下(轴0)堆叠。

36. df.join()

用途:基于索引(Index)的快速合并。

八、 时间序列:Pandas 的看家本领

Pandas 最初就是为金融数据分析设计的,因此时间处理能力极强。

37. pd.to_datetime()

用途:智能转换为时间类型。解析失败时可使用 errors='coerce' 设为 NaT。

38. df.resample()

用途:重采样。

场景:将“分钟级”数据降采样为“日级”数据(如 rule='1D'),并配合 .mean() 或 .sum() 使用。

39. df.shift()

用途:数据位移。

场景:计算同比、环比(即当前行减去上一行的数据)。

40. df.rolling()

用途:移动窗口。

场景:计算 5 日移动平均线(MA5):df['price'].rolling(window=5).mean()。

九、结语

掌握这 40 个方法,意味着你已经覆盖了 90% 的日常数据处理需求。Pandas 的强大不仅在于函数数量,更在于其向量化运算的设计哲学。

在实际开发中,建议时刻关注内存使用与运行效率,尽量避免在 DataFrame 中使用 Python 原生的 for 循环,转而使用上述内置的高效方法。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询