【人工智能】Python常用库-Pandas常用方法教程
Pandas 是一个强大的 Python 数据处理和分析库,它提供了高效的数据结构和函数,用于清洗、操作和分析数据。以下是 Pandas 的常用方法及详细说明。
1. 安装和导入 Pandas
安装 Pandas:
pip install pandas
导入 Pandas:
import pandas as pd
2. 数据结构
2.1 Series(序列)
Series 是一维数据结构,类似于带标签的数组。
# 创建 Series
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)
输出结果
a 10
b 20
c 30
d 40
dtype: int64
2.2 DataFrame(数据框)
DataFrame 是二维数据结构,类似于表格。
# 创建 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'gender': ['F', 'M', 'M'],
'city': ['New York', "San Francisco", "Los Angeles"]}
df = pd.DataFrame(data)
print(df)
输出结果
name age gender city
0 Alice 25 F New York
1 Bob 30 M San Francisco
2 Charlie 35 M Los Angeles
3. 读取与保存数据
3.1 读取数据
-
从 CSV 文件读取:
df = pd.read_csv('data.csv')
-
从 Excel 文件读取:
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
3.2 保存数据
-
保存为 CSV 文件:
df.to_csv('output.csv', index=False)
-
保存为 Excel 文件:
df.to_excel('output.xlsx', index=False)
4. 基本操作
4.1 查看数据
-
查看前几行:
print(df.head(5)) # 默认前5行
-
查看后几行:
print(df.tail(5))
-
数据基本信息:
print(df.info()) print(df.describe()) # 数值列的统计信息
4.2 选择数据
-
选择列:
print(df["Name"]) # 单列 print(df[["Name", "Age"]]) # 多列
-
选择行(按索引):
print(df.loc[0]) # 按标签 print(df.iloc[0]) # 按位置
-
条件选择:
print(df[df["Age"] > 30]) # 筛选 Age > 30 的行
5. 数据清洗
5.1 处理缺失值
-
检查缺失值:
print(df.isnull().sum())
-
填充缺失值:
df["Age"].fillna(df["Age"].mean(), inplace=True)
-
删除含缺失值的行或列:
df.dropna(inplace=True) # 删除含缺失值的行
5.2 重命名列
df.rename(columns={"Name": "Full Name", "Age": "Years"}, inplace=True)
6. 数据操作
6.1 排序
df.sort_values("Age", ascending=False, inplace=True)
6.2 添加与删除列
-
添加新列:
df["Salary"] = [50000, 60000, 70000]
-
删除列:
df.drop(columns=["City"], inplace=True)
6.3 分组与聚合
- 按某列分组:
grouped = df.groupby("City") print(grouped["Age"].mean())
7. 数据合并
7.1 合并(merge)
df1 = pd.DataFrame({"ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"]})
df2 = pd.DataFrame({"ID": [1, 2, 4], "Score": [85, 90, 95]})
merged_df = pd.merge(df1, df2, on="ID", how="inner")
print(merged_df)
输出结果
ID Name Score
0 1 Alice 85
1 2 Bob 90
7.2 拼接(concat)
df1 = pd.DataFrame({"Name": ["Alice", "Bob"], "Age": [25, 30]})
df2 = pd.DataFrame({"Name": ["Charlie", "David"], "Age": [35, 40]})
result = pd.concat([df1, df2], ignore_index=True)
print(result)
输出结果
Name Age
0 Alice 25
1 Bob 30
2 Charlie 35
3 David 40
8. 高级功能
8.1 透视表
pivot = df.pivot_table(values="Age", index="City", aggfunc="mean")
print(pivot)
8.2 时间序列
dates = pd.date_range("2024-01-01", periods=5)
df = pd.DataFrame({"Date": dates, "Value": [10, 20, 15, 25, 30]})
df.set_index("Date", inplace=True)
print(df)
输出结果
Date Value
2024-01-01 10
2024-01-02 20
2024-01-03 15
2024-01-04 25
2024-01-05 30
8.3 数据透视和多级索引
multi_df = df.set_index(["City", "Name"])
print(multi_df)
9. 数据可视化(与 Matplotlib 集成)
import matplotlib.pyplot as plt
df.plot(kind="bar", x="Name", y="Age")
plt.show()
10. 动态分析案例
案例:分析员工薪资分布
data = {
"Department": ["HR", "IT", "HR", "IT", "Finance", "HR"],
"Salary": [5000, 6000, 5200, 6500, 7000, 4800],
}
df = pd.DataFrame(data)
# 按部门分组,计算平均薪资
avg_salary = df.groupby("Department")["Salary"].mean()
# 绘图
avg_salary.plot(kind="bar", color="skyblue")
plt.title("Average Salary by Department")
plt.ylabel("Salary")
plt.show()
总结
Pandas 提供了丰富的功能,适用于数据读取、清洗、分析和可视化。通过熟悉上述方法,可以高效地完成数据处理任务,并为更深入的分析奠定基础。