Pandas系列 – 数据统计函数

  1. 汇总类统计
  2. 唯一去重和按值计数
  3. 相关系数和协方差
import pandas as pd

0、读取csv数据

fpath = "./datas/beijing_tianqi/beijing_tianqi_2018.csv"
df = pd.read_csv(fpath)
df.head(3)
ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02018-01-013℃-6℃晴~多云东北风1-2级592
12018-01-022℃-5℃阴~多云东北风1-2级491
22018-01-032℃-5℃多云北风1-2级281
# 替换掉温度的后缀℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')
df.head(3)
ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02018-01-013-6晴~多云东北风1-2级592
12018-01-022-5阴~多云东北风1-2级491
22018-01-032-5多云北风1-2级281

1、汇总类统计

# 一下子提取所有数字列统计结果
df.describe()
bWenduyWenduaqiaqiLevel
count365.000000365.000000365.000000365.000000
mean18.6657538.35890482.1835622.090411
std11.85804611.75505351.9361591.029798
min-5.000000-12.00000021.0000001.000000
25%8.000000-3.00000046.0000001.000000
50%21.0000008.00000069.0000002.000000
75%29.00000019.000000104.0000003.000000
max38.00000027.000000387.0000006.000000
## 查看单个Series的数据
df["bWendu"].mean()
18.665753424657535
# 最高温
df["bWendu"].max()
38
# 最低温
df["bWendu"].min()
-5

2、唯一去重和按值计数

2.1 唯一性去重

一般不用于数值列,而是枚举、分类列

df["fengxiang"].unique()
array(['东北风', '北风', '西北风', '西南风', '南风', '东南风', '东风', '西风'], dtype=object)
df["tianqi"].unique()
array(['晴~多云', '阴~多云', '多云', '阴', '多云~晴', '多云~阴', '晴', '阴~小雪', '小雪~多云',
       '小雨~阴', '小雨~雨夹雪', '多云~小雨', '小雨~多云', '大雨~小雨', '小雨', '阴~小雨',
       '多云~雷阵雨', '雷阵雨~多云', '阴~雷阵雨', '雷阵雨', '雷阵雨~大雨', '中雨~雷阵雨', '小雨~大雨',
       '暴雨~雷阵雨', '雷阵雨~中雨', '小雨~雷阵雨', '雷阵雨~阴', '中雨~小雨', '小雨~中雨', '雾~多云',
       '霾'], dtype=object)
df["fengli"].unique()
array(['1-2级', '4-5级', '3-4级', '2级', '1级', '3级'], dtype=object)

2.2 按值计数

df["fengxiang"].value_counts()
南风     92
西南风    64
北风     54
西北风    51
东南风    46
东北风    38
东风     14
西风      6
Name: fengxiang, dtype: int64
df["tianqi"].value_counts()
晴         101
多云         95
多云~晴       40
晴~多云       34
多云~雷阵雨     14
多云~阴       10
阴~多云        8
小雨~多云       8
雷阵雨         8
雷阵雨~多云      7
小雨          6
多云~小雨       5
阴           4
雷阵雨~中雨      4
中雨~小雨       2
中雨~雷阵雨      2
阴~小雨        2
霾           2
阴~小雪        1
小雪~多云       1
大雨~小雨       1
小雨~雷阵雨      1
小雨~中雨       1
小雨~雨夹雪      1
雾~多云        1
雷阵雨~阴       1
暴雨~雷阵雨      1
小雨~阴        1
雷阵雨~大雨      1
阴~雷阵雨       1
小雨~大雨       1
Name: tianqi, dtype: int64
df["fengli"].value_counts()
1-2级    236
3-4级     68
1级       21
4-5级     20
2级       13
3级        7
Name: fengli, dtype: int64

3、相关系数和协方差

用途(超级厉害):
1. 两只股票,是不是同涨同跌?程度多大?正相关还是负相关?
2. 产品销量的波动,跟哪些因素正相关、负相关,程度有多大?

来自知乎,对于两个变量X、Y:
1. 协方差:衡量同向反向程度,如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。
2. 相关系数:衡量相似度程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大

# 协方差矩阵:
df.cov()
bWenduyWenduaqiaqiLevel
bWendu140.613247135.52963347.4626220.879204
yWendu135.529633138.18127416.1866850.264165
aqi47.46262216.1866852697.36456450.749842
aqiLevel0.8792040.26416550.7498421.060485
# 相关系数矩阵
df.corr()
bWenduyWenduaqiaqiLevel
bWendu1.0000000.9722920.0770670.071999
yWendu0.9722921.0000000.0265130.021822
aqi0.0770670.0265131.0000000.948883
aqiLevel0.0719990.0218220.9488831.000000
# 单独查看空气质量和最高温度的相关系数
df["aqi"].corr(df["bWendu"])
0.07706705916811077
df["aqi"].corr(df["yWendu"])
0.02651328267296879
# 空气质量和温差的相关系数
df["aqi"].corr(df["bWendu"]-df["yWendu"])
0.21652257576382047
# !! 这就是特征工程对于机器学习重要性的一个例子
0.21/0.02
10.5

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注