0x00 描述性统计总结

数据的描述性统计.png

0x01 使用python实现描述性统计相关指标

读取数据

  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. from scipy.stats import mode
  5. from collections import Counter
  6. from scipy import stats
  7. import math
  8. import seaborn as sns
  9. path = "./actual_combat.xlsx"
  10. # 读取Excel中的数据
  11. data = pd.read_excel(path)
  12. # print(data)
  13. # 打印前20行数据
  14. print(data.head(20))

众数

  1. # 众数
  2. # 方式一
  3. print("众数为: %d" % data.mode().iloc[0])
  4. # 方式二
  5. mode_num = mode(data)
  6. print("众数为: %d, 众数的个数为: %d," % (mode_num[0][0], mode_num[1][0]))
  7. print(mode_num)
  8. print(data.mode())

中位数

  1. # 中位数
  2. # 法一
  3. print('中位数为: ', data.median())
  4. # 法二
  5. print('中位数为: ', np.percentile(data, 50))
  6. # 法三
  7. print('中位数为: ', data.quantile(.50))

分位数

  1. # 分位数
  2. # 法一
  3. print('下四分位数为: ', np.percentile(data, 25))
  4. print('上四分位数为: ', np.percentile(data, 75))
  5. # 法二
  6. print('下四分位数为: ', data.quantile(.25))
  7. print('上四分位数为: ', data.quantile(.75))

算术平均数

  1. # 算数平均数
  2. print('算数平均数为: ', data.mean())

几何平均数

  1. # 几何平均数
  2. s = 1
  3. for i in data:
  4. s *= i
  5. print('几何平均数为: ', math.pow(s, 1/len(data)))

众数

  1. # 众数
  2. count = Counter(data)
  3. modeCount = count.most_common(1)[0][1]
  4. totalCount = len(data)

异众比率

  1. # 异众比率
  2. ratio = (totalCount - modeCount) / totalCount
  3. print(ratio)

四分位差

  1. # 四分位差
  2. # 法一
  3. print('四分位差为: ', np.percentile(data, 75) - np.percentile(data, 25))
  4. # 法二
  5. 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()

Snip20191112_4.png

0xFF 总结

python几个数据处理工具要经常练习达到熟练使用

附 使用的数据文件
actual_combat.xlsx