pandas之汇总和计算描述统计

文章目录

  • 一、简介
  • 二、汇总和计算描述统计
    • 2.1 sum()——值的总和
      • 2.1.1 直接求和:`df.sum()`
      • 2.1.2 对行求和:`df.sum(axis=1)`
    • 2.2 类sum
    • 2.3 相关系数、协方差
      • 2.3.1 DataFrame计算相关系数和协方差
      • 2.3.2 Series计算相关系数和协方差
    • 2.4 唯一值和值计数
      • 2.4.1 唯一值(去重)
      • 2.4.2 值计数

一、简介

 这里介绍了几种创建Series和DataFrame的方式,这里介绍了几种查找数据的方式,本文继续介绍pandas中几种常用的汇总和计算描述统计

二、汇总和计算描述统计

2.1 sum()——值的总和

 先创建一个DataFrame:

import pandas as pd

data = {'name': ['apolo', 'adm', 'bolon', 'ali', 'cathy', 'devn', 'elov'],
        'age': [18, 29, 32, 28, 34, 19, None],
        'sex': ['male', 'female', 'male', 'male', 'female', 'male', 'female'],
        'weight': [67, 78, 87, 59, 90, 101, 78],
        'height': [170, 189, 190, 179, None, 160, 185]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e','f', 'g'])
df

输出

    name	age	    sex	weight	height
a	apolo	18.0	male	67	170.0
b	adm	    29.0	female	78	189.0
c	bolon	32.0	male	87	190.0
d	ali	    28.0	male	59	179.0
e	cathy	34.0	female	90	NaN
f	devn	19.0	male	101	160.0
g	elov	NaN	    female	78	185.0

2.1.1 直接求和:df.sum()

不加任何参数,直接进行求和是按列求和,即计算每一列的和。对于非数值型数据,是将字符串直接拼在一起。此时会自动忽略null值。可以通过skipna=False设置为不忽略null值,此时带有null值的列的和会变为null值。
输出:是个Series对象

name           apoloadmbolonalicathydevnelov
age                                    160.0
sex       malefemalemalemalefemalemalefemale
weight                                   560
height                                1073.0
dtype: object

2.1.2 对行求和:df.sum(axis=1)

指定参数axis=1,则是对行求和,即计算每一行的和。此时会总动选择数值型的数据进行求和。此时会自动忽略null值。可以通过skipna=False设置为不忽略null值,此时带有null值的行的和会变为null值。

输出:是个Series对象

a    255.0
b    296.0
c    309.0
d    266.0
e    124.0
f    280.0
g    263.0
dtype: float64

输出:不忽略null值,df.sum(axis=1, skipna=False)

a    255.0
b    296.0
c    309.0
d    266.0
e      NaN
f    280.0
g      NaN
dtype: float64

2.2 类sum

 pandas中还有一些其它的方法和sum的用法类似,即默认是列,可通过axis=1改为对行,通过skipna=False设置为不忽略null值,这些方法包括以下:

方法 说明
df.mean() 求平均值
df.min()和df.max() 求最小值和最大值,对于字符串类型的,最小值返回按字母升序,当不忽略null值时,最小值最大值都是NaN
df.var() 求样本值的方差
df.std() 求样本值的标准差
df.count() 计算非null值的数量,同样可通过axis=1指定行
df.median() 计算中位数
df.skew() 样本值的偏度,即三阶矩
df.kurt() 样本值的峰度,即四阶矩
df.cumsum() 样本值的累计和,但不能将字符串和数值型累计和,即在令axis=1时,要注意,返回的数据结构和原数据一样,只不过每个元素变为累计和
df.cumprod() 累计积,注意累计积不能处理字符型数据,但累计和可以
df.diff() 计算一阶差分,同样不能计算字符型,会报错

2.3 相关系数、协方差

 相关系数和协方差是统计中很基础也很重要的统计量,下面分Series和DataFrame计算相关系数和协方差。

2.3.1 DataFrame计算相关系数和协方差

 对于DataFrame的数据,直接利用df.corr()和df.cov()计算相关系数和协方差。

相关系数矩阵:其中参数method可取{‘pearson’, ‘kendall’, ‘spearman’},默认为pearson相关系数。

df.corr()

输出

            age	      weight	 height
age	    1.000000	0.057227	0.917196
weight	0.057227	1.000000	-0.273292
height	0.917196	-0.273292	1.000000

此外,还可以用df.corrwith()计算与其中一列的相关系数:

df.corrwith(df['age'])

输出

age       1.000000
weight    0.057227
height    0.917196
dtype: float64

协方差矩阵

df.cov()

输出

	        age	      weight	height
age	    44.666667	5.933333	73.850000
weight	5.933333	201.333333	-47.733333
height	73.850000	-47.733333	139.766667

2.3.2 Series计算相关系数和协方差

 当整个的DataFrame很大,但我们只想比较其中两个或多个特征的相关系数和协方差时,可按照下面的方式进行计算。
相关系数

df['age'].corr(df['weight'])

输出

0.05722673972479561

协方差

df['age'].cov(df['weight'])

输出

5.933333333333334

2.4 唯一值和值计数

 对于Series数据结构,可以计算它有多少个不同的元素,即去重;还可以计算每个元素出现的频率。

2.4.1 唯一值(去重)

df['sex'].unique()

输出:DataFrame没有这个方法。

array(['male', 'female'], dtype=object)

2.4.2 值计数

df['sex'].value_counts()

输出:DataFrame没有这个方法,默认降序排列。

male      4
female    3
Name: sex, dtype: int64

你可能感兴趣的:(Python,python,数据分析)