Pandas 描述性统计
描述性统计用于总结和描述数据的基本特征。Pandas 提供了丰富的统计函数,可以快速获取数据的整体分布情况。
基本统计函数
实例
import pandas as pd
import numpy as np
# 创建示例数据
df = pd.DataFrame({
"年龄": [25, 30, 28, 35, 22, 40, 38, 45, 29, 31],
"薪资": [12000, 15000, 11000, 18000, 9000, 20000, 17000, 22000, 12500, 14000],
"绩效": [85, 92, 78, 88, 65, 95, 82, 90, 75, 89]
})
print("=== 数据概览 ===")
print(f"数据形状: {df.shape}")
print(f"\n基础统计:")
print(df.describe())
import numpy as np
# 创建示例数据
df = pd.DataFrame({
"年龄": [25, 30, 28, 35, 22, 40, 38, 45, 29, 31],
"薪资": [12000, 15000, 11000, 18000, 9000, 20000, 17000, 22000, 12500, 14000],
"绩效": [85, 92, 78, 88, 65, 95, 82, 90, 75, 89]
})
print("=== 数据概览 ===")
print(f"数据形状: {df.shape}")
print(f"\n基础统计:")
print(df.describe())
常用统计量
| 函数 | 说明 | 示例 |
|---|---|---|
count() |
非空值数量 | df["年龄"].count() |
sum() |
求和 | df["薪资"].sum() |
mean() |
平均值 | df["年龄"].mean() |
median() |
中位数 | df["年龄"].median() |
std() |
标准差 | df["绩效"].std() |
var() |
方差 | df["绩效"].var() |
min() / max() |
最小/最大值 | df["年龄"].min() |
quantile() |
分位数 | df["薪资"].quantile(0.25) |
计算分位数
实例
import pandas as pd
import numpy as np
s = pd.Series(range(1, 101)) # 1到100
print("各种分位数:")
print(f"0% (最小): {s.quantile(0)}")
print(f"25%: {s.quantile(0.25)}")
print(f"50% (中位数): {s.quantile(0.50)}")
print(f"75%: {s.quantile(0.75)}")
print(f"100% (最大): {s.quantile(1)}")
print()
# 同时计算多个分位数
print("批量分位数:")
print(s.quantile([0.1, 0.2, 0.5, 0.8, 0.9]))
import numpy as np
s = pd.Series(range(1, 101)) # 1到100
print("各种分位数:")
print(f"0% (最小): {s.quantile(0)}")
print(f"25%: {s.quantile(0.25)}")
print(f"50% (中位数): {s.quantile(0.50)}")
print(f"75%: {s.quantile(0.75)}")
print(f"100% (最大): {s.quantile(1)}")
print()
# 同时计算多个分位数
print("批量分位数:")
print(s.quantile([0.1, 0.2, 0.5, 0.8, 0.9]))
describe 汇总
describe() 提供数据集中数值列的综合统计摘要。
实例
import pandas as pd
df = pd.DataFrame({
"年龄": [25, 30, 28, 35],
"薪资": [12000, 15000, 11000, 18000],
"城市": ["北京", "上海", "广州", "深圳"]
})
print("数值列统计:")
print(df.describe())
print()
print("包含所有列:")
print(df.describe(include="all"))
df = pd.DataFrame({
"年龄": [25, 30, 28, 35],
"薪资": [12000, 15000, 11000, 18000],
"城市": ["北京", "上海", "广州", "深圳"]
})
print("数值列统计:")
print(df.describe())
print()
print("包含所有列:")
print(df.describe(include="all"))
相关系数与协方差
实例
import pandas as pd
import numpy as np
df = pd.DataFrame({
"年龄": [25, 30, 28, 35, 22],
"薪资": [12000, 15000, 11000, 18000, 9000],
"绩效": [85, 92, 78, 88, 65]
})
print("相关系数矩阵:")
print(df.corr())
print()
# 与特定列的相关
print("与薪资的相关:")
print(df.corr()["薪资"])
import numpy as np
df = pd.DataFrame({
"年龄": [25, 30, 28, 35, 22],
"薪资": [12000, 15000, 11000, 18000, 9000],
"绩效": [85, 92, 78, 88, 65]
})
print("相关系数矩阵:")
print(df.corr())
print()
# 与特定列的相关
print("与薪资的相关:")
print(df.corr()["薪资"])
相关系数范围 -1 到 1,越接近 1 表示正相关,越接近 -1 表示负相关,接近 0 表示无相关。
高级统计
实例
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 偏度(衡量分布偏斜程度)
print(f"偏度: {s.skew()}")
# 峰度(衡量分布尖峭程度)
print(f"峰度: {s.kurtosis()}")
print()
# 累计统计
s = pd.Series([1, 2, 3, 4, 5])
print("累计和:")
print(s.cumsum())
print()
print("累计最大值:")
print(s.cummax())
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 偏度(衡量分布偏斜程度)
print(f"偏度: {s.skew()}")
# 峰度(衡量分布尖峭程度)
print(f"峰度: {s.kurtosis()}")
print()
# 累计统计
s = pd.Series([1, 2, 3, 4, 5])
print("累计和:")
print(s.cumsum())
print()
print("累计最大值:")
print(s.cummax())
