Pandas 是一个功能强大的 Python 数据分析库,本文介Pandas10个经典的高级操作案例,每个案例都有详细的代码和数据,感兴趣的读者可直接复制代码运行体会这些经典案例。
案例1:使用 pivot_table
进行数据透视表操作
import pandas as pd
# 创建示例数据
data = {
'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'Category': ['A', 'B', 'A', 'B'],
'Value': [10, 20, 30, 40]
}
df = pd.DataFrame(data)
# 使用 pivot_table 创建数据透视表
pivot_df = df.pivot_table(index='Date', columns='Category', values='Value', aggfunc='sum')
pivot_df
输出:
案例2:使用 groupby
和 apply
进行分组操作并应用自定义函数
import pandas as pd
# 创建示例数据
data = {
'Group': ['A', 'A', 'B', 'B'],
'Value': [10, 20, 30, 40]
}
df = pd.DataFrame(data)
# 定义自定义函数
def custom_function(x):
return x.max() - x.min()
# 使用 groupby 和 apply 进行分组操作并应用自定义函数
result = df.groupby('Group')['Value'].apply(custom_function)
result
输出:
案例3:使用 merge
进行多表合并操作
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({
'Key': ['A', 'B', 'C'],
'Value1': [1, 2, 3]
})
df2 = pd.DataFrame({
'Key': ['A', 'B', 'D'],
'Value2': [4, 5, 6]
})
# 使用 merge 进行多表合并操作
merged_df = pd.merge(df1, df2, on='Key', how='inner')
merged_df
输出:
案例4:使用 cut
进行分箱操作
import pandas as pd
# 创建示例数据
data = {'Value': [1, 7, 5, 4, 6, 8, 9, 2, 3, 10]}
df = pd.DataFrame(data)
# 使用 cut 进行分箱操作
bins = [0, 3, 6, 9, 12]
labels = ['Low', 'Medium', 'High', 'Very High']
df['Category'] = pd.cut(df['Value'], bins=bins, labels=labels)
df
输出:
案例5:使用 explode
将列表展开为行
import pandas as pd
# 创建示例数据
data = {
'ID': [1, 2],
'Values': [[10, 20, 30], [40, 50]]
}
df = pd.DataFrame(data)
# 使用 explode 将列表展开为行
exploded_df = df.explode('Values')
exploded_df
输出:
案例6:使用 applymap
对整个 DataFrame 应用函数
import pandas as pd
# 创建示例数据
data = {
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
# 定义自定义函数
def add_one(x):
return x + 1
# 使用 applymap 对整个 DataFrame 应用函数
result_df = df.applymap(add_one)
print(result_df)
输出:
A B C
0 2 5 8
1 3 6 9
2 4 7 10
案例7:使用 query
进行条件查询
import pandas as pd
# 创建示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [85, 90, 95]
}
df = pd.DataFrame(data)
# 使用 query 进行条件查询
filtered_df = df.query('Age > 25 and Score > 90')
filtered_df
输出:
案例8:使用 concat
进行多表拼接
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({
'Key': ['A', 'B', 'C'],
'Value1': [1, 2, 3]
})
df2 = pd.DataFrame({
'Key': ['D', 'E', 'F'],
'Value2': [4, 5, 6]
})
# 使用 concat 进行多表拼接
concatenated_df = pd.concat([df1, df2], ignore_index=True)
concatenated_df
输出:
案例9:使用 melt
将宽格式转换为长格式
import pandas as pd
# 创建示例数据
data = {
'ID': [1, 2, 3],
'Math': [90, 80, 70],
'Science': [85, 75, 65]
}
df = pd.DataFrame(data)
# 使用 melt 将宽格式转换为长格式
melted_df = pd.melt(df, id_vars=['ID'], value_vars=['Math', 'Science'], var_name='Subject', value_name='Score')
melted_df
输出:
案例10:使用 crosstab
创建交叉表
import pandas as pd
# 创建示例数据
data = {
'Gender': ['Male', 'Female', 'Female', 'Male', 'Female'],
'Preference': ['Football', 'Basketball', 'Football', 'Basketball', 'Football']
}
df = pd.DataFrame(data)
# 使用 crosstab 创建交叉表
crosstab_df = pd.crosstab(df['Gender'], df['Preference'])
crosstab_df
输出:
以上这些案例展示了 Pandas 的常用高级操作,熟悉这些之后,可大幅提高数据处理和分析能力。