pandas描述统计-汇总计算-唯一值-值计数-成员资格-缺失值处理

导入模块
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
1.1汇总计算与描述统计pandas的Series和DataFrame

xxx.sum()
xxx.mean()
xxx.max()
xxx.add()

df1=DataFrame(
    [
        [3,2,np.nan],
        [2,7,-5],
        [5,np.nan,np.nan],
        [7,6,4]       
    ]
)
#默认参数 skipna=True 跳过nan的
df1.sum()
#axis=0
df1.sum(axis=0)
#axis=0还可以写成axis='index'
df1.sum(axis='index')
print(df1)
df1.sum(axis='columns')
#平均
print(df1)
df1.mean(skipna=True)
#让nan参与计算
df1.mean(skipna=False)
#而很多时候需要处理nan然后计算
df1.fillna(0).mean()
round(df1.fillna(0).mean(),1)
累计求和
df2=DataFrame(np.random.randint(1,10,(4,6)),columns=list('ABCDEF'))
#普通求和
df2.sum(axis=1)
#累计求和
print(df2)
df2.cumsum(axis=1)
print(df2)
df2.cummax(axis=1)
描述统计
df3=DataFrame(
    np.random.randint(1,100,[10,4]),
    columns=list('ABCD')
)
#xxx.describe()显示一堆信息
df3.describe()
df3.std()
df3.A.describe()
#如果不是纯数字Series
s1= Series(
    [np.random.choice('西瓜,橘子,苹果,木瓜,双星,77'.split(','))for i in range(60)]
)
s1.describe()
2.2唯一值、值计数、成员资格
Sereis,unique()提取唯一值
注意:DataFrame 没有
#得到一个数组
s1.unique()
#应用一个唯一值提取的函数
df2.apply(Series.unique,axis=0)
s1.value_counts(normalize=True)
!!! Series.value_counts()用于统计每个值的数量默认按照数量的降序排序value_counts(self, normalize=False, sort=True, ascending=False, bins=None, dropna=True)参数: normalize:bool 默认False 如果是true则返回的是包含唯一值的相对频率

sort:bool 默认True 是否按照值排序
ascending:bool 默认False 降序
bins:整数或区间列 分组数据 为pd.cut()提供便利
dropna:bool 默认为True 默认丢掉nan

s1.value_counts()
#显示频率
s1.value_counts(normalize=True)
#是否按照值排序
s1.value_counts(sort=False)
bins 参数, 一般用在纯数据上做分区统计
	假设统计100个人的年龄想统计不同年龄区间有多少人
ages=Series(np.random.randint(1,101,100))

#当bins=整数。会自动找出最小值与最大值.每个区间的长度为极差/bins
ages.value_counts(bins=4)
#当bins=[a,b,c,d] 会统计a-b,b-c,c-d区间的人数
ages.value_counts(bins=[0,18,40,60,100])
#可以不包含所有数据
ages.value_counts(bins=[0,18,40])
ages.value_counts(normalize=True,bins=[0,18,40])
#把0.21加个%号
f'{0.21*100}%'
#应用一个函数显示为百分比
ages.value_counts(normalize=True,bins=[0,18,40]).apply(lambda x:f'{x*100}%')
!!! 还有一个值统计函数 pandas.value_count()

pandas.value_count(object, normalize=False, sort=True, ascending=False, bins=None, dropna=True)

pd.value_counts(s1)
s1.apply(pd.value_counts)

# 创建df
df4 =DataFrame(
    np.random.randint(1,6,(4,6)),
    index=list('ABCD'),
    columns=list('甲,乙,丙,丁,戊,己'.split(','))
)
df4.value_counts()
df4.apply(pd.value_counts,axis=0)
df4.apply(pd.value_counts,axis=1)
成员资格

object.isin([xx]) 判段xx是否在object中

s2=Series(np.random.randint(1,6,10))
# 判断后得到bool序列
condition=s2.isin([2,4])
s2[condition]
#应用匿名函数对每个值进行not函数操作
#得到s2,2,4以外的数
s2.isin([2,4]).apply(lambda x:not x)
s2.isin([2,4])^True
缺失值处理
dropna(axis=0,how='any',inplace=False)默认只要有一个nan 就丢弃数据
    how='all' 表示整行或者整列全部是nan才丢
fillna() 填充值
isnull() 返回 是 nan 的布尔序列
notnull() 返回 不是 nan 的布尔序列
df1.dropna()
df1.dropna(axis=1)
df1.dropna(axis=1,how='all')
df1[1].isnull()
df1[1].notnull()
df1[1].fillna(0)
df4.to_excel('123.xlsx')
df4.to_excel('123.xlsx',sheet_name='1')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值