介绍一下如何在python里使用value_counts( )和counts( )进行计数。
一、counts( )函数
1、count()在字符串里的使用
函数体及主要参数:
count(str,start=0 ,end=len(string)
str:要搜索的子字符串
start:开始搜索的位置,默认是0,也就是从第一个字符开始搜索。
end:结束搜索的位置,默认在最后一个字符停止搜索。
实验一下~
首先我们还是先构建一个字符串:
df_str="abcabcdabcdeab5343实验字符串串串串"df_str
统计一下字符“a”的个数:
统计一下字符“3”的个数:
统计一下字符“串”的个数:
题外小知识:
输出结果的时候,其实L更推荐使用format()函数进行输出,这也是一种更实用的输出方式,类似上面的输出结果,我们可以用format( )进行更高级的输出:
print("统计一下字符 'a' 的个数: \n{}".format(df_str.count('a')))
等以后有空再写一篇关于输入输出的文章~
2、count( )在列表里的使用
创建一个实验列表:
a=[1,2,3,4,5,4,4,4,2,'a','b','a','子','子']
大家注意看下面6种情况下,不同的输出结果:
也就是说在使用的时候,要根据数值类型的不同,正确区别字符。
二、value_counts( )函数
在pandas中,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,默认删除
首先,我们还是先创建一个数据表:
import pandas as pdimport numpy as npdf = pd.DataFrame({'城市':['北京','广州', '天津', '上海', '杭州', '成都', '澳门', '南京','北京','北京'], '收入':[10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000,5000,5000], '年龄':[50, 43, 34, 40, 25, 25, 45, 32,25,25]})df.set_index([["一","二","三","四","五","六","七","八","九","十"]],inplace=True)df
(1)查看“城市”这一列的计数结果:
可以看到,默认降序排列;
(2)采用升序的方式,查看“收入”这一列:
df['收入'].value_counts(ascending=True)
(3)使用标准化normalize=True的方法,查看“年龄”这一列的计数占比:
df['年龄'].value_counts(ascending=True,normalize=True)
PS:缺失值是默认被删除的,也就是不被计算其中~
而且,如果要计数的对象是numpy里的ndarray类型的话,可以用size的方法,同样可以达到上述的效果,这里就不举例了~