🐼 Python数据分析:Pandas 统计分析基础!
❝“不会 Pandas 的 Python 程序员,就像没有筷子的火锅——空有食材却吃不到嘴!”
如果你正在学数据分析、数据科学,或者只是想用 Python 把 Excel 活儿干得更漂亮,那 Pandas 绝对是你绕不开的“神兽”。
今天我们就来一次 Pandas 全家桶大赏,带你从 Series 到 透视表,从“索引迷宫”到“分组魔法”,一网打尽!
🧱 1. Pandas 的三大法宝:Series、DataFrame、Panel(虽然 Panel 已退休)
Pandas 有三个主要数据结构:
- Series:像一列 Excel 表格,带标签的一维数组。
- DataFrame:就是一张完整的表格,行和列都有名字。
- Panel:曾经是三维结构(比如多个 Sheet),但 2020 年后官方已弃用,所以咱们就当它“光荣退休”了。
❝💡 生活类比:
- Series = 你家冰箱里的饮料清单(可乐、雪碧、矿泉水)
- DataFrame = 整个超市的库存表(饮料、零食、日用品)
- Panel = 超市连锁集团的全国门店库存(太复杂,现在不用了 😅)
import pandas as pd# 创建一个 Series(饮料清单)drinks = pd.Series([3, 5, 2], index=['可乐', '雪碧', '矿泉水'])print(drinks)
输出:
可乐 3雪碧 5矿泉水 2dtype: int64
📊 2. DataFrame:你的数据瑞士军刀
DataFrame 是 Pandas 的灵魂。它就像 Excel 表格,但能自动对齐、自动计算、还能一键画图!
data = {'姓名': ['张三', '李四', '王五'],'年龄': [25, 30, 35],'城市': ['北京', '上海', '广州']}df = pd.DataFrame(data)print(df)
输出:
姓名 年龄 城市0 张三 25 北京1 李四 30 上海2 王五 35 广州
❝✅ 小贴士:
df.values → 所有数据(NumPy 数组)df.index → 行标签(默认 0,1,2...)
🔍 3. 索引操作:给数据装上“GPS”
Pandas 的索引不是摆设!它让你精准定位每一行、每一列。
重新索引(reindex):搬家也要带行李!
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])s_new = s.reindex(['a', 'b', 'c', 'd'], fill_value=0)print(s_new)
输出:
a 1b 2c 3d 0 # 新地址没东西?填个 0!dtype: int64
❝🚗 生活类比:你搬家到新小区,邻居 d 还没搬来?先给他留个空车位(0)!
设置索引(set_index):把“城市”变成行号!
df_city = df.set_index('城市')print(df_city)
输出:
姓名 年龄城市 北京 张三 25上海 李四 30广州 王五 35
❝🏙️ 现在你可以直接 df_city.loc['北京'] 找人了!
🔎 4. 数据查询:你想找谁?
选列:df['姓名'] 或 df.姓名(但别有空格!)
选行:用 .loc(按标签)和 .iloc(按位置)
# 找“上海”的人print(df.loc[df['城市'] == '上海'])# 找第 0 行print(df.iloc[0])
随机抽样:sample()
# 随机抽 1 个人去团建print(df.sample(1))
❝🎲 就像抽奖!老板再也不用担心公平问题了~
✏️ 5. 数据编辑:增删改查,样样精通
增加列:
df['工资'] = [10000, 12000, 15000]
删除行/列:
df.drop('工资', axis=1, inplace=True) # 删除列
修改数据:
df.loc[0, '年龄'] = 26# 张三偷偷改年龄 😏
批量替换:
df.replace({'北京': '帝都', '上海': '魔都'}, inplace=True)
➕ 6. 数据运算:算术 + 函数 + 排序
自动对齐:不同索引也能算!
s1 = pd.Series([1, 2], index=['a', 'b'])s2 = pd.Series([3, 4], index=['b', 'c'])print(s1 + s2)
输出:
a NaNb 5.0c NaN
❝⚠️ 对不上的地方,自动变 NaN —— “你不在我世界,我也不强求。”
函数应用三剑客:
# 去掉价格里的“元”df_price = pd.DataFrame({'price': ['30元', '43元']})df_price['price'] = df_price['price'].map(lambda x: x.replace('元', ''))
排序:sort_values() 和 sort_index()
df.sort_values(by='年龄', ascending=False) # 按年龄从大到小排
📈 7. 描述统计:让数据自己说话
df.describe() # 自动统计数值列:均值、标准差、四分位数...df['年龄'].mean() # 平均年龄df['城市'].value_counts() # 各城市人数统计
❝📊 输出结果就像 HR 的年终报告:“我们团队平均 30 岁,帝都人最多!”
🧩 8. 分组聚合:groupby + agg = 数据炼金术
“分组”是数据分析的灵魂!
# 按城市分组,看平均年龄df.groupby('城市')['年龄'].mean()
多指标聚合:
df.groupby('城市').agg({'年龄': 'mean','姓名': 'count'})
❝👨👩👧👦 生活类比:就像班主任按班级统计:平均分、及格人数、最高分……
📋 9. 数据透视表:Excel 用户的终极梦想
Pandas 的 pivot_table 比 Excel 更灵活!
pd.pivot_table(df, values='年龄', index='城市', aggfunc='mean')
交叉表(crosstab):统计组合频次
# 假设有性别和城市pd.crosstab(df['城市'], df['性别'])
❝📉 输出就像市场调研报告:“帝都女性程序员占比 60%!”
🎨 10. 可视化:一行代码出图!
Pandas 内置绘图功能(基于 Matplotlib):
df['年龄'].plot(kind='hist') # 直方图df.plot(x='姓名', y='年龄', kind='bar') # 柱状图df.plot(kind='scatter', x='年龄', y='工资') # 散点图
❝🖼️ 不用写 10 行 Matplotlib,Pandas 让你 一行出图,两行发朋友圈!
🎯 总结:Pandas 学习路线图
| |
|---|
| Series / DataFrame 创建、查看属性 |
| |
| |
| |
💌 最后送你一句:
❝“Pandas 不是熊猫,而是你数据世界的超级外挂。”
学会它,你不仅能搞定老板的周报,还能在朋友面前秀一把“Python 数据魔术”!