python:pandas数值统计,.value_counts()的用法,全DataFrame数据计数

本文详细介绍了如何利用Python的Numpy库对Excel数据进行统计,包括统计某一值或字符的出现次数,以及特定行或列中的出现次数。通过使用.value_counts()函数,可以方便地进行数据计数,并对结果进行排序、标准化和分组。此外,还展示了如何处理多列数据,统计不同列属性相同和不同的重复值。最后,将统计结果导出到CSV文件中,以便进一步分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文记录了使用python语言中的numpy模块,来对Excel表格数据中的值进行统计的代码,统计全表中某一值或者字符出现的个数,以及某一行,某一列中该值出现的个数。主要使用的函数是.value_counts()。



一、函数介绍

.value_counts() 计数

value_counts( values, sort=True, ascending=False, normalize=False, bins=None, dropna=True)

参数名作用
sort=True是否要进行排序(默认:进行排序)
ascending=False(默认:降序排列)
normalize=False是否要对计算结果进行标准化,并且显示标准化后的结果(默认:False)
bins=None可以自定义分组区间(默认:否)
dropna=True是否删除缺失值nan(默认:删除)

二、.value_counts()对一列数据计数

有时候,运算结果中间不完全显示,有人称为“截断数据”。我们把数据输出为csv,输出函数加上mode=‘a’就可以看到全部数据了
输出数据:
不完全显示的的数据
将结果全部输出为csv后可以全部看到
加参数以后的输出结果

df = df["RA_C"].value_counts()

print(df)

df.to_csv("df.csv",mode='a')

三、统计多列数据(不同列属性相同)中重复出现的值

对Excel表格全部数据计数, 不只是一列。

pieces = []

for col in dfS.columns:

	tmp_series = df[col].value_counts()
	
	tmp_series.name = col
	
	pieces.append(tmp_series)
	
	df_value_counts = pd.concat(pieces, axis=1)

结果如图所示:
每一列的数值出现的次数都有,如果想知道全表格出现的次数,就求和。
在这里插入图片描述


#将NaN填充为0
df = df_value_counts.fillna(0)
 
#添加新的一行:对每一行求和
df["Total"] =df.apply(lambda x:x.sum(),axis =1)
  
#只提取index和Total
df = df[['Total']]  

# 只显示df的前5行
print(df.head())

# 将结果输出为csv文件
df.to_csv("result_3.csv",mode='a')

结果如下:可知数值221出现在excel表中的数目为132825次,222出现94924次,220出现9276次…
在这里插入图片描述
输出结果在Excel中排序,就可以知道数值的多少了


.value_counts()

四、统计多列数据(不同列属性不同 )中重复出现的值

输入:

输出:计数结果
在这里插入图片描述

import pandas as pd
import os 
os.chdir(r'C:\Users\Administrator\Desktop')
df = pd.read_excel('数据.xls')
def fun(df):
    dic = {}
    for i in df.columns:
        dic[i] = df[i].value_counts()
    return dic
dd = fun(df)

# 写入excel
import xlwt
f = xlwt.Workbook() #创建工作薄
sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5  
 
style = xlwt.XFStyle()
style.pattern = pattern

al = xlwt.Alignment()
al.horz = 0x02 # 设置水平居中
al.vert = 0x01 # 设置垂直居中
style.alignment = al
# 获取字典的键
list_ = [k  for  k in  dd]
k=0
l=0
for s in range(len(dd)):
    l=k+1
    # 写入第一行
    sheet1.write_merge(0, 1, k, l,list_[s] , style)
    # 写入内容
    j = 2
    for v,h  in zip(dd[list_[s]],dd[list_[s]].index):
        sheet1.write(j,k,h) #循环写入 竖着写 
        sheet1.write(j,l,v) #循环写入 竖着写 
        j=j+1
    k=k+3
f.save('统计数据.xls')#保存文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_养乐多_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值