Pandas学习笔记·精简速查版:用人话总结Series、DataFrame和数据处理核心操作

📅 2026/7/1 2:45:11
Pandas学习笔记·精简速查版:用人话总结Series、DataFrame和数据处理核心操作
Pandas 极简入门像操作 Excel 一样处理数据一、Pandas 是干什么的一句话Pandas 就是 Python 里的 Excel专门用来处理表格数据。它有三个核心“零件”零件是什么比喻Series带标签的一列数据Excel 里单独一列每行有名字DataFrame带标签的二维表格Excel 里的一张完整工作表时间序列以日期时间为索引的 Series按时间排列的一列数据二、Series一列带名字的数据创建importpandasaspd# 自动编号s1pd.Series([1,6,11,16])# 用字典创建字典的键自动变成行标签s2pd.Series({语文:90,数学:92,Python:98})常用操作和 NumPy 一样都是批量操作s2[语文]94# 修改某个值s2[s290]# 筛选大于90的科目s2.mean()# 平均值s2.median()# 中值s2.nsmallest(2)# 最小的2个值abs(s1)# 所有元素求绝对值s15# 所有元素加5三、时间序列自动生成日期# 从某天开始每隔7天生成一个日期pd.date_range(start20260101,periods10,freq7D)# 常用频率D天W周H小时M月末MS月初用日期做索引# 创建按小时排列的数据datapd.Series(indexpd.date_range(start20260701,periods24,freqH),datarange(24))# 每3小时重采样求平均值data.resample(3H).mean()四、DataFrame一张完整的表格创建表格最常用字典方式# 字典的键变成列名值变成数据dfpd.DataFrame({语文:[87,79,67,92],数学:[93,89,80,77],英语:[90,80,70,75]},index[张三,李四,王五,赵六])读取 Exceldfpd.read_excel(文件路径.xlsx)dfpd.read_excel(文件路径.xlsx,usecols[姓名,交易额])# 只读指定列dfpd.read_excel(文件路径.xlsx,skiprows[1,3,5])# 跳过某些行五、数据筛选和查看三种取数据的方式方式怎么用什么时候用df[条件]df[df[交易额] 2000]按条件筛选行df.iloc[行号, 列号]df.iloc[3, 1]按数字位置取df.loc[行标签, 列名]df.loc[张三, 交易额]按名字取查看数据概览df.head()# 前5行df.tail()# 后5行df[交易额].describe()# 一键看所有统计信息总数、均值、最大最小等df[交易额].max()# 最大值df[交易额].min()# 最小值df[交易额].idxmax()# 最大值在哪一行df.nlargest(5,交易额)# 交易额最大的5条df.nsmallest(3,交易额)# 交易额最小的3条六、排序# 按一列排序df.sort_values(by交易额,ascendingFalse)# 降序# 按多列排序先按交易额降序再按工号升序df.sort_values(by[交易额,工号],ascending[False,True])# 按列名排序df.sort_index(axis1)七、分组聚合像 Excel 的分类汇总三步套路分组 → 取列 → 计算# 每个员工卖了多少钱df.groupby(by姓名)[交易额].sum()# 每个柜台的交易额平均值df.groupby(by柜台)[交易额].mean()# 每个员工在不同时段的交易额df.groupby(by[姓名,时段])[交易额].sum()# 一键做多种计算df.groupby(by姓名).agg([sum,mean,min,max])八、数据清洗异常值# 找出异常值df[df[交易额]200]# 低于200的df[df[交易额]3000]# 高于3000的# 替换异常值df.loc[df[交易额]200,交易额]200# 低于200的全部改成200缺失值df.dropna()# 直接丢掉有空值的行df.fillna({交易额:1000})# 用固定值填充df.fillna(df[交易额].mean())# 用平均值填充重复值df.duplicated()# 查哪些行重复了df.drop_duplicates()# 删掉重复行df.drop_duplicates(subset[工号,日期])# 指定列去重九、透视表和交叉表透视表把数据按行列重新排列自动汇总。# 每人每天的交易额总额df.pivot_table(values交易额,index姓名,columns日期,aggfuncsum,marginsTrue)交叉表专门统计频次的透视表。# 每人每天的上班次数pd.crosstab(df[姓名],df[日期],marginsTrue)# 每人在各柜台交易总额pd.crosstab(df[姓名],df[柜台],df[交易额],aggfuncsum)pivot_table 和 crosstab 的区别用哪个什么时候用pivot_table已经有效据想按不同维度汇总求和、平均等crosstab想统计出现了多少次频次两个都可以用十、标准差和协方差标准差看数据稳不稳定。越小越稳定越大越像过山车。df.std()# 标准差df.std()**2# 方差标准差的平方协方差看两组数据是同步变化还是反向变化。df.cov()# 协方差矩阵协方差值含义比喻正数同步变化你往前走我也往前走负数反向变化你往前走我往后退接近0互不影响各走各的十一、数据合并# 按行堆叠加长pd.concat([表1,表2,表3])# 按列关联加宽像 Excel 的 VLOOKUPpd.merge(员工表,工资表,on工号)十二、两个好用的内置接口dt 接口处理日期。pd.to_datetime(df[日期]).dt.weekday_name# 自动转成周几pd.to_datetime(df[日期]).dt.quarter# 自动转成第几季度str 接口处理字符串。df[日期].str.extract(r(\d{4}-\d{2}))# 提取年月df[日期].str.endswith(6)# 判断是否以6结尾Pandas 最核心的思维模式你想做什么对应的操作看数据长什么样head()、describe()找符合条件的数据df[df[列名] 值]按某列分类汇总df.groupby(列名)[要算的列].sum()把表排个序df.sort_values(by列名)把两张表拼一起pd.concat()或pd.merge()把汇总结果做成二维表df.pivot_table()处理脏数据dropna()、fillna()、drop_duplicates()附Pandas 核心函数速查表函数一句话用途pd.read_excel()读取 Excel 文件df.head()/df.tail()看前/后几行df.describe()一键看所有统计信息df[列名].max()/.min()/.mean()/.sum()最大/最小/平均/求和df[df[列名] 值]按条件筛选df.sort_values(by列名)按某列排序df.groupby(列名)[算的列].sum()分类汇总求和df.groupby(列名).agg([sum,mean])同时做多种汇总df.pivot_table(values, index, columns, aggfunc)透视表pd.crosstab(index, columns, values, aggfunc)交叉表统计频次df.dropna()/df.fillna()处理缺失值df.drop_duplicates()去重df.resample(7D, on日期).sum()重采样按时间汇总df.std()/df.cov()标准差 / 协方差pd.concat([表1, 表2])按行堆叠pd.merge(表1, 表2, on键)按列关联注:已经使用DeepSeek进行整理精简核心内容些许不理解的配合个人笔记进行理解。