Pandas实战闯关(从数据导入到重塑)

📅 2026/7/16 2:24:28
Pandas实战闯关(从数据导入到重塑)
1. Pandas入门从零开始的数据处理之旅第一次接触Pandas时我完全被它的强大功能震撼到了。这个Python库就像是数据分析师的瑞士军刀能轻松处理各种结构化数据。想象一下你手里有一堆杂乱无章的Excel表格和CSV文件Pandas能帮你把它们变成整齐划一、易于分析的数据集。安装Pandas非常简单只需要在命令行输入pip install pandas安装完成后我们通常会这样导入它import pandas as pdPandas最核心的两个数据结构是Series和DataFrame。Series就像是一个带标签的一维数组而DataFrame则是二维的表格型数据结构可以理解为多个Series的集合。举个例子创建一个Series就像在Python中创建列表一样简单import pandas as pd s pd.Series([1, 3, 5, 7], index[a, b, c, d]) print(s)2. 数据导入让杂乱数据井井有条在实际项目中我们很少从零开始创建数据更多时候需要从外部文件导入。Pandas支持多种数据格式包括CSV、Excel、JSON、SQL等。我最常用的是CSV文件导入df pd.read_csv(data.csv)这里有几个实用技巧如果文件没有表头可以设置headerNone可以指定编码方式比如encodingutf-8可以只读取特定列使用usecols参数我曾经处理过一个英国降雨量的数据集原始数据列名非常混乱我是这样处理的df pd.read_csv(uk_rain_2014.csv, header0) df.columns [water_year,rain_octsep,outflow_octsep,rain_decfeb, outflow_decfeb, rain_junaug, outflow_junaug]3. 数据清洗打造干净的数据集拿到数据后清洗是必不可少的步骤。常见的问题包括缺失值、重复值和异常值。处理缺失值有三种主要方法直接删除df.dropna()填充固定值df.fillna(0)使用统计量填充df.fillna(df.mean())去重操作也很简单df df.drop_duplicates()我曾经遇到一个数据集其中包含大量重复的观测记录。使用drop_duplicates()后数据量从10万行减少到7万行大大提高了后续分析的效率。4. 数据筛选与排序快速找到你需要的信息Pandas提供了强大的数据筛选能力。比如要筛选出年龄大于30的记录df[df[age] 30]排序操作同样简单直观。可以按索引排序s.sort_index()也可以按值排序df.sort_values(bysalary)在实际项目中我经常需要按多个条件排序。比如先按部门排序再按薪资降序排列df.sort_values(by[department, salary], ascending[True, False])5. 数据合并整合多源数据当数据分散在多个表格中时我们需要合并它们。Pandas提供了多种合并方式concat简单拼接pd.concat([df1, df2])merge基于键的合并类似SQL的JOINpd.merge(df1, df2, onkey)join基于索引的合并df1.join(df2)我曾经处理过一个电商项目需要将用户信息、订单信息和产品信息三个表合并。使用merge操作后成功构建了一个完整的分析数据集。6. 数据重塑改变数据的组织结构有时候我们需要改变数据的形状Pandas提供了多种重塑方法pivot将长格式转为宽格式df.pivot(indexdate, columnsproduct, valuessales)melt将宽格式转为长格式pd.melt(df, id_vars[id], value_vars[Q1, Q2, Q3, Q4])stack/unstack处理层次化索引stacked df.stack() unstacked stacked.unstack()在处理销售数据时我经常需要使用pivot来生成按产品和时间维度的交叉表这对后续的可视化分析非常有帮助。7. 分组与聚合发现数据中的模式分组操作是数据分析的核心。Pandas的groupby功能非常强大df.groupby(department)[salary].mean()可以一次计算多个统计量df.groupby(department).agg({salary: [mean, min, max], age: median})我曾经用这个功能分析过员工流失率按部门分组后计算离职率发现了某些部门的异常情况。8. 实战案例完整的数据处理流程让我们通过一个完整的例子将上述技巧串联起来。假设我们有一个销售数据集需要进行以下处理读取数据并检查基本信息df pd.read_csv(sales.csv) print(df.info()) print(df.head())处理缺失值df df.fillna({region: Unknown, sales: 0})按地区和产品分组计算总销售额sales_summary df.groupby([region, product])[sales].sum().unstack()计算各产品的销售占比sales_pct sales_summary.div(sales_summary.sum(axis1), axis0)保存处理后的数据sales_summary.to_csv(sales_summary.csv) sales_pct.to_csv(sales_pct.csv)这个流程涵盖了从数据导入到最终输出的完整环节在实际工作中非常实用。