一、Pandas 是什么?
- 核心功能:快速处理和分析表格数据(类似 Excel,但更强大)
- 核心数据结构:
- **
Series
**:一维数组(带标签的列) - **
DataFrame
**:二维表格(多个 Series 的集合,类似 Excel 表格)
- **
二、安装 Pandas
在命令行中输入(需提前安装 Python):
pip install pandas
三、快速上手
1. 导入 Pandas
import pandas as pd # 约定俗成的缩写
2. 创建数据结构
① 创建 Series(一列数据)
data = [10, 20, 30, 40]
s = pd.Series(data, name="年龄")
print(s)
输出:
0 10
1 20
2 30
3 40
Name: 年龄, dtype: int64
② 创建 DataFrame(表格)
data = {
"姓名": ["张三", "李四", "王五"],
"年龄": [25, 30, 28],
"城市": ["北京", "上海", "广州"]
}
df = pd.DataFrame(data)
print(df)
输出:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
四、核心操作大全
1. 数据读取/写入
# 读取 CSV 文件
df = pd.read_csv("data.csv")
# 读取 Excel 文件
df = pd.read_excel("data.xlsx")
# 保存为 CSV
df.to_csv("new_data.csv", index=False) # 不保存行索引
2. 查看数据
df.head(3) # 查看前3行
df.tail() # 查看后5行(默认)
df.shape # 显示行数和列数 (行, 列)
df.info() # 查看数据类型和内存信息
df.describe() # 显示数值列的统计摘要(均值、标准差等)
3. 数据选择
① 选择列
df["姓名"] # 选择单列 → 返回 Series
df[["姓名", "年龄"]] # 选择多列 → 返回 DataFrame
② 选择行
df.loc[0] # 按标签选择第一行
df.iloc[0:2] # 按位置选择前两行(0和1行)
df[df["年龄"] > 25] # 条件筛选:年龄大于25的行
4. 数据清洗
① 处理缺失值
df.dropna() # 删除包含缺失值的行
df.fillna(0) # 用0填充缺失值
② 删除重复值
df.drop_duplicates()
③ 修改数据
df["年龄"] = df["年龄"] + 1 # 年龄列全部+1
df.replace("北京", "Beijing") # 替换特定值
5. 数据处理
① 排序
df.sort_values("年龄", ascending=False) # 按年龄降序排序
② 分组聚合
df.groupby("城市")["年龄"].mean() # 按城市分组,计算平均年龄
③ 合并数据
df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pd.DataFrame({"A": [5, 6], "B": [7, 8]})
pd.concat([df1, df2]) # 纵向合并
五、数据可视化(需安装 matplotlib)
df["年龄"].plot(kind="hist") # 绘制年龄分布直方图
df.plot(x="姓名", y="年龄", kind="bar") # 柱状图
六、实战案例:销售数据分析
假设有一个 sales.csv
文件,包含以下字段:
- 日期 | 产品 | 销量 | 单价
# 读取数据
df = pd.read_csv("sales.csv")
# 计算总销售额
df["销售额"] = df["销量"] * df["单价"]
# 按产品汇总
result = df.groupby("产品")["销售额"].sum()
# 输出结果
print(result.sort_values(ascending=False))