前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas | 数据统计

Pandas | 数据统计

作者头像
生信real
发布2022-12-20 09:29:50
7390
发布2022-12-20 09:29:50
举报
文章被收录于专栏:Linux基础入门

前言

本次我们介绍Pandas数据统计函数,如针对数值类型的统计(获取样本个数、平均值、标准差、极值等);针对非数值类型的统计(获取每个类型的个数)以及计算相关系数和协方差。

本文框架

  • 0. 导入Pandas
  • 1. 读取数据与数据预处理
  • 2. 汇总类统计
  • 3. 获取唯一值与按值计数
  • 4. 相关系数与协方差

0. 导入Pandas

代码语言:javascript
复制
import pandas as pd

1. 读取数据与数据预处理

代码语言:javascript
复制
# 读取数据
data = pd.read_csv("./datas/04/Weather_2018.csv")
--------------------------------------------------------------------------------
# 查看数据前6行
data.head(6)
# 返回结果
          ymd bWendu yWendu tianqi fengxiang fengli  aqi aqiInfo  aqiLevel
0  2018-01-01     3℃    -6℃   晴~多云       东北风   1-2级   59       良         2
1  2018-01-02     2℃    -5℃   阴~多云       东北风   1-2级   49       优         1
2  2018-01-03     2℃    -5℃     多云        北风     1-2级   28       优         1
3  2018-01-04     0℃    -8℃      阴       东北风     1-2级   28       优         1
4  2018-01-05     3℃    -6℃   多云~晴       西北风   1-2级   50       优         1
5  2018-01-06     2℃    -5℃   多云~阴       西南风   1-2级   32       优         1
--------------------------------------------------------------------------------
# 替换掉温度的后缀℃,便于后续按数值计算
# 先将数据转化成字符串,再将"℃"替换为空,最后再转化为数值
data["bWendu"] = data["bWendu"].str.replace("℃", "").astype("int32")
data["yWendu"] = data["yWendu"].str.replace("℃", "").astype("int32")
--------------------------------------------------------------------------------
# 查看转化后数据框
data.head()
# 返回结果
           bWendu  yWendu tianqi fengxiang fengli  aqi aqiInfo  aqiLevel
ymd                                                                      
2018-01-01       3      -6   晴~多云       东北风   1-2级   59       良         2
2018-01-02       2      -5   阴~多云       东北风   1-2级   49       优         1
2018-01-03       2      -5     多云        北风   1-2级   28       优         1
2018-01-04       0      -8      阴       东北风   1-2级   28       优         1
2018-01-05       3      -6   多云~晴       西北风   1-2级   50       优         1

2. 汇总类统计

针对数值列,我们可以使用"df.describe()"将统计结果计算出来,返回结果有个数(count)、平均数(mean)、标准差(std)、最小值(min)、最大值(max)以及分位数(25%、50%、75%)。

代码语言:javascript
复制
# 数据统计
data.describe()
# 返回结果
           bWendu      yWendu         aqi    aqiLevel
count  365.000000  365.000000  365.000000  365.000000
mean    18.665753    8.358904   82.183562    2.090411
std     11.858046   11.755053   51.936159    1.029798
min     -5.000000  -12.000000   21.000000    1.000000
25%      8.000000   -3.000000   46.000000    1.000000
50%     21.000000    8.000000   69.000000    2.000000
75%     29.000000   19.000000  104.000000    3.000000
max     38.000000   27.000000  387.000000    6.000000
--------------------------------------------------------------------------------
# 查看单个列某一统计值,以"bWendu"为例
data["bWendu"].mean()
# 返回结果
18.665753424657535

3. 获取唯一值与按值计数

对于非数值类型,我们可以通过"unique"进行去重,获取列中有哪些类型值;

以及使用"value_counts"获取每个类型的个数。

代码语言:javascript
复制
# 获取唯一值
data["fengxiang"].unique()
# 返回结果
array(['东北风', '北风', '西北风', '西南风', '南风', '东南风', '东风', '西风'], dtype=object)
--------------------------------------------------------------------------------
# 按值计数
data["fengxiang"].value_counts()
# 返回结果(由高到低排序)
南风     92
西南风    64
北风     54
西北风    51
东南风    46
东北风    38
东风     14
西风      6
Name: fengxiang, dtype: int64

4. 相关系数与协方差

相关系数(corr):检查两个变量之间变化趋势的方向以及程度,值范围-1到+1,0表示两个变量不相关,正值表示正相关,负值表示负相关,值越大相关性越强。

协方差(cov):协方差可以反应两个变量的协同关系,变化趋势是否一致,同向还是反向变化。如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。

代码语言:javascript
复制
# 计算协方差矩阵
data.cov()
# 返回结果
            bWendu      yWendu          aqi   aqiLevel
bWendu    140.613247  135.529633    47.462622   0.879204
yWendu    135.529633  138.181274    16.186685   0.264165
aqi        47.462622   16.186685  2697.364564  50.749842
aqiLevel    0.879204    0.264165    50.749842   1.060485
--------------------------------------------------------------------------------
# 计算相关系数矩阵
data.corr()
# 返回结果
            bWendu    yWendu       aqi  aqiLevel
bWendu    1.000000  0.972292  0.077067  0.071999
yWendu    0.972292  1.000000  0.026513  0.021822
aqi       0.077067  0.026513  1.000000  0.948883
aqiLevel  0.071999  0.021822  0.948883  1.000000
--------------------------------------------------------------------------------
# 单独查看两个列之间的相关系数
data["aqiLevel"].corr(data["bWendu"])
# 返回结果
0.07199861917696304
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信百宝箱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 本文框架
    • 0. 导入Pandas
      • 1. 读取数据与数据预处理
        • 2. 汇总类统计
          • 3. 获取唯一值与按值计数
            • 4. 相关系数与协方差
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档