0x00 描述性统计总结
0x01 使用python实现描述性统计相关指标
读取数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import mode
from collections import Counter
from scipy import stats
import math
import seaborn as sns
path = "./actual_combat.xlsx"
# 读取Excel中的数据
data = pd.read_excel(path)
# print(data)
# 打印前20行数据
print(data.head(20))
众数
# 众数
# 方式一
print("众数为: %d" % data.mode().iloc[0])
# 方式二
mode_num = mode(data)
print("众数为: %d, 众数的个数为: %d," % (mode_num[0][0], mode_num[1][0]))
print(mode_num)
print(data.mode())
中位数
# 中位数
# 法一
print('中位数为: ', data.median())
# 法二
print('中位数为: ', np.percentile(data, 50))
# 法三
print('中位数为: ', data.quantile(.50))
分位数
# 分位数
# 法一
print('下四分位数为: ', np.percentile(data, 25))
print('上四分位数为: ', np.percentile(data, 75))
# 法二
print('下四分位数为: ', data.quantile(.25))
print('上四分位数为: ', data.quantile(.75))
算术平均数
# 算数平均数
print('算数平均数为: ', data.mean())
几何平均数
# 几何平均数
s = 1
for i in data:
s *= i
print('几何平均数为: ', math.pow(s, 1/len(data)))
众数
# 众数
count = Counter(data)
modeCount = count.most_common(1)[0][1]
totalCount = len(data)
异众比率
# 异众比率
ratio = (totalCount - modeCount) / totalCount
print(ratio)
四分位差
# 四分位差
# 法一
print('四分位差为: ', np.percentile(data, 75) - np.percentile(data, 25))
# 法二
print('四分位差为: ', data.quantile(.75) - data.quantile(.25))
极差
# 极差
print("最大值为: ", data.max())
print("最小值为: ", data.min())
print('极差为: ', data.max() - data.min())
平均差
# 平均差
meanData = data.mean()
s = 0
for i in data:
s += (abs(i - meanData))
print('平均差为: ', s/len(data))
方差
# 方差
print('方差为: ', np.var(data))
标准差
# 标准差
print('标准差为: ', np.std(data))
偏度
# 偏度
print('偏度为: ', stats.skew(data))
峰度
# 峰度
print('峰度为: ', stats.kurtosis(data))
输出data的概括性信息
# 直接输出data的概括性信息
print(data.describe())
0x02 使用seaborn绘制数据的分布图
# 绘制一下data的分布图
sns.set_palette("hls") # 设置所有图的颜色, 使用hls色彩空间
sns.distplot(data, color="r", bins=10, kde=True)
plt.show()
0xFF 总结
python几个数据处理工具要经常练习达到熟练使用
附 使用的数据文件
actual_combat.xlsx