美文网首页
python数据分析6:数据计算

python数据分析6:数据计算

作者: 0清婉0 | 来源:发表于2021-01-10 18:48 被阅读0次

【求和】

DataFrame.sum([axis,skipna,level,...])

axis=1表示按行相加,axis=0表示按列相加(默认)

skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换

NaN表示非数值、非数字值

pandas会为缺少的值自动分配NaN值

import pandas as pd

data = [[110, 105, 99], [105, 88, 115], [109, 120, 130]]

index = [1, 2, 3]

columns = ['语文', '数学', '英语']

pd.set_option('display.unicode.east_asian_width', True)

df = pd.DataFrame(data=data, index=index, columns=columns)

df['总成绩']=df.sum(axis=1)

print(df)

  语文  数学  英语  总成绩

1  110  105    99    314

2  105    88  115    308

3  109  120  130    359

【求平均值】

DataFrame.mean([axis,skipna,level,...])

axis=1表示按行相加,axis=0表示按列相加(默认)

skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换

level表示索引层级

返回值,返回Series对象,行/列的平均值数据

import pandas as pd

data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115]]

index = [1, 2, 3, 4]

columns = ['语文', '数学', '英语']

pd.set_option('display.unicode.east_asian_width', True)

df = pd.DataFrame(data=data, index=index, columns=columns)

new = df.mean()

df = df.append(new, ignore_index=True)  # 不使用index标签

print(df)

    语文  数学        英语

0  110.0  105.0  99.000000

1  105.0  88.0  115.000000

2  109.0  120.0  130.000000

3  112.0  115.0        NaN

4  109.0  107.0  114.666667

【求最大值】

DataFrame.max([axis,skipna,level,...])

axis=1表示按行相加,axis=0表示按列相加(默认)

skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换

level表示索引层级

返回值,返回Series对象,行/列的平均值数据

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115]]

index = [1, 2, 3, 4]

columns = ['语文', '数学', '英语']

df = pd.DataFrame(data=data, index=index, columns=columns)

new = df.max()

df = df.append(new, ignore_index=True)  # 不使用index标签

print(df)

    语文  数学  英语

0  110.0  105.0  99.0

1  105.0  88.0  115.0

2  109.0  120.0  130.0

3  112.0  115.0    NaN

4  112.0  120.0  130.0

【求最小值】

DataFrame.min([axis,skipna,level,...])

axis=1表示按行相加,axis=0表示按列相加(默认)

skipna=1表示NaN值自动转换为0(默认),skipna=0表示NaN值不自动转换

level表示索引层级

返回值,返回Series对象,行/列的平均值数据

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [[110, 105, 99], [105, 88, 115], [109, 120, 130], [112, 115]]

index = [1, 2, 3, 4]

columns = ['语文', '数学', '英语']

df = pd.DataFrame(data=data, index=index, columns=columns)

new = df.min()

df = df.append(new, ignore_index=True)  # 不使用index标签

print(df)

    语文  数学  英语

0  110.0  105.0  99.0

1  105.0  88.0  115.0

2  109.0  120.0  130.0

3  112.0  115.0    NaN

4  105.0  88.0  99.0

【求中位数】

# 中位数,又称中值,是指按顺序排列的一组数据中位于中间位置的数,不受异常值的影响

# 如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数

DataFrame.median(axis=None,skipna=None,level=None,numeric_only=None,**kwargs)

axis=1表示行,axis=0表示列,默认为None(无)

skipna布尔型,表示计算结果是否排队了NaN/Null值,默认值为True

level表示索引层级,默认为无

numeric_only,仅数字,布尔型,默认无

**kwargs:要传递给函数的附加关键字参数

返回值,返回Series或DataFrame对象

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]

columns = ['语文', '数学', '英语']

df = pd.DataFrame(data=data, columns=columns)

print(df)

print(df.median())

  语文  数学  英语

0  110  120  110

1  130  130  130

2  130  120  130

语文    130.0

数学    120.0

英语    130.0

dtype: float64

【求众数】

# 众数,是一组数据中出现最多的数

DataFrame.mode(axis=0,numeric_only=False,dropna=True)

axis=1表示行,axis=0表示列,默认为0

numeric_only,仅数字,布尔型,默认False。如果为True,则仅适用于数字列

dropna,是否删除缺失值,布尔型,默认为True

返回值,返回DataFrame对象

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]

columns = ['语文', '数学', '英语']

df = pd.DataFrame(data=data, columns=columns)

print(df)

print(df.mode())  # 三科成绩的众数

print(df.mode(axis=1))  # 每一行的众数

print(df['数学'].mode())  # ‘数学’的众数

  语文  数学  英语

0  110  120  110

1  130  130  130

2  130  120  130

  语文  数学  英语

0  130  120  130

0  110

1  130

2  130

0    120

【求方差】(无偏样本方差,即方差和/样本数-1)

# NumPy计算的方差(样本方差本身,即方差和/样本数)

# 方差,用于衡量一组数据的离散程度,即各组数据与它们的平均数的差的平方

DataFrame.var(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs)

axis=1表示行,axis=0表示列,默认为None(无)

skipna布尔型,表示计算结果是否排除NaN/Null值,默认值为True

level表示索引层级,默认值为None(无)

ddof整型,默认为1,自由度,计算中使用的除数是N-ddof,其中N表示元素的数量

numeric_only,仅数字,布尔型,默认无

**kwargs要传递给函数的附加关键字参数

返回值,返回Series对象或DataFrame对象

# 通过方差判断谁的物理成绩更稳定

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [[110, 113, 102, 105, 108], [118, 98, 119, 85, 118]]

index = ['小黑', '小白']

columns = ['物理1', '物理2', '物理3', '物理4', '物理5']

df = pd.DataFrame(data=data, index=index, columns=columns)

print(df)

print(df.var(axis=1))

        物理1  物理2  物理3  物理4  物理5

小黑    110    113    102    105    108

小白    118    98    119    85    118

小黑    18.3

小白    237.3

dtype: float64

# 小黑的波动小,发挥稳定

【求标准差】又称均方差,是方差的平方根,用来表示数据的离散程度

DataFrame.std(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs)

axis=1表示行,axis=0表示列,默认为None(无)

skipna布尔型,表示计算结果是否排除NaN/Null值,默认值为True

level表示索引层级,默认值为None(无)

ddof整型,默认为1,自由度,计算中使用的除数是N-ddof,其中N表示元素的数量

numeric_only,仅数字,布尔型,默认无

**kwargs要传递给函数的附加关键字参数

返回值,返回Series对象或DataFrame对象

# 通过方差判断谁的物理成绩更稳定

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [[110, 120, 110], [130, 130, 130], [130, 120, 130]]

columns = ['语文', '数学', '英语']

df = pd.DataFrame(data=data, columns=columns)

print(df)

print(df.std())

  语文  数学  英语

0  110  120  110

1  130  130  130

2  130  120  130

语文    11.547005

数学    5.773503

英语    11.547005

dtype: float64

【求分位数】也称分位点,它以概率为依据将数据分割为几个等份

# 常用的有中位数(即二分位数)、四分位数、百分位数等

DataFrame.std(q=0.5,axis=0,numeric_only=True,interpolation='linear')

q浮点型或数组,默认为0.5(50%分位数),其值在0~1之间

axis=1表示行,axis=0表示列,默认为0

numeric_only,仅数字,布尔型,默认True

interpolation,内插值,可选参数,用于指定要使用的插值方法,当期望的分位数位于两个数据点i和j之间时

线性:i+(j-i)× 分数,其中分数是指数被i和j包围的小数部分

较低:i

较高:j

最近:i或j都以最近者为准

中点:(i+j)/2

返回值,返回Series对象或DataFrame对象

# 通过分位数确定被淘汰的35%的学生

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

data = [120, 89, 98, 78, 65, 102, 112, 56, 79, 45]

columns = ['数学']

df = pd.DataFrame(data=data, columns=columns)

x = df['数学'].quantile(0.35) # 计算35%的分位数

print(df[df['数学']<=x])  # 输出淘汰学生

  数学

3    78

4    65

7    56

9    45

例子:【计算日期、时间和时间增量数据的分位数】

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)

df = pd.DataFrame({

    'A':[1, 2],

    'B':[pd.Timestamp('2019'),

        pd.Timestamp('2020')],

    'C':[pd.Timedelta('1 days'),

        pd.Timedelta('2 days')]

})

print(df.quantile(0.5, numeric_only=False))

A                    1.5

B    2019-07-02 12:00:00

C        1 days 12:00:00

Name: 0.5, dtype: object

后面这个例子没看明白是做什么用的。后续再研究。

相关文章

网友评论

      本文标题:python数据分析6:数据计算

      本文链接:https://www.haomeiwen.com/subject/yxukaktx.html