首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pandas df按多列分组的百分比计数

pandas是Python中一个强大的数据分析库,提供了丰富的数据处理和分析工具。在pandas中,可以使用DataFrame(df)对象来表示和操作数据。

要按多列分组并计算百分比计数,可以使用pandas的groupby函数结合value_counts和transform函数来实现。

首先,使用groupby函数按多列进行分组。可以传入一个包含多个列名的列表作为groupby函数的参数,例如:

代码语言:txt
复制
grouped = df.groupby(['列名1', '列名2'])

然后,使用value_counts函数对分组后的数据进行计数。可以将value_counts函数应用于分组对象的某一列,例如:

代码语言:txt
复制
counted = grouped['某一列'].value_counts()

接下来,使用transform函数将计数结果转换为百分比。可以将transform函数应用于分组对象的某一列,然后使用div函数将计数结果除以总数,例如:

代码语言:txt
复制
percentage = counted.groupby(level=0).transform(lambda x: x / x.sum())

最后,将百分比计数结果添加到原始DataFrame中,可以使用assign函数将结果赋值给一个新列,例如:

代码语言:txt
复制
df = df.assign(百分比计数=percentage)

这样,就可以得到按多列分组的百分比计数结果。

pandas的优势在于其简洁而强大的API,可以方便地进行数据处理和分析。它适用于各种数据分析场景,包括数据清洗、数据转换、数据聚合等。腾讯云提供了云服务器、云数据库、云存储等多种产品,可以满足不同场景下的数据处理和分析需求。

更多关于pandas的信息和使用方法,可以参考腾讯云的文档: pandas官方文档 pandas API文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python-科学计算-pandas-14-df按行按列进行转换

Python的科学计算及可视化 今天讲讲pandas模块 将Df按行按列进行转换 Part 1:目标 最近在网站开发过程中,需要将后端的Df数据,渲染到前端的Datatables,前端识别的数据格式有以下特征...- 数据格式为一个列表 - 列表中每一个元素为一个字典,每个字典对应前端表格的一行 - 单个字典的键为前端表格的列名,字典的值为前端表格每列取的值 简单来说就是要将一个Df转换为一个列表,该列表有特定的格式...表示记录,对应数据库的行 Part 4:延伸 以上方法将Df按行转换,那么是否可以按列进行转换呢?...查了下orient参数,发现可以取值的参数非常多,如下图所示 发现list满足需求,观察实际输出结果,生成一个字典。...字典的键为列名,值为一个列表,该列表对应df的一个列 dict_fields = df_1.to_dict(orient='list') print(dict_fields) ? list对应结果 ?

1.9K30

盘点一个Pandas多列分组问题

一、前言 前几天在Python白银交流群【在途中要勤奋的熏肉肉】问了一道Pandas处理的问题,如下图所示。...原始数据如下图所示: 下面是她自己写的代码: # df['name'] = df['name'].str.lower() test['pid'] = test['pid'].astype(int) test...'-'.join(set(s)), } testdf = test.groupby(test['pid']).aggregate(aggregate_funcs) print(testdf) 目前的大概思路如下...顺利地解决了粉丝的问题。 三、总结 大家好,我是皮皮。这篇文章主要盘点了一道使用Pandas处理数据的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【在途中要勤奋的熏肉肉】提问,感谢【月神】给出的思路和代码解析,感谢【dcpeng】、【猫药师Kelly】等人参与学习交流。

1.2K10
  • Pandas数据分组的函数应用(df.apply()、df.agg()和df.transform()、df.applymap())

    3种方法: apply():逐行或逐列应用该函数 agg()和transform():聚合和转换 applymap():逐元素应用函数 apply()函数 介绍 apply函数是pandas里面所有函数中自由度最高的函数...axis=0,表示将一列数据作为Series的数据结构传入给定的function中 print(t1) t2 = df.apply(f, axis=1) print(t2) 输出结果如下所示...>>> type(df['score_math'].apply(np.mean)) pandas.core.series.Series'> #逐行求每个学生的平均分 >>> df.apply...()的特例,可以对pandas对象进行逐行或逐列的处理; 能使用agg()的地方,基本上都可以使用apply()代替。...Series对象进行了map()操作 通过以上分析我们可以看到,apply、agg、transform三种方法都可以对分组数据进行函数操作,但也各有特色,总结如下: apply中自定义函数对每个分组数据单独进行处理

    2.3K10

    9个value_counts()的小技巧,提高Pandas 数据分析效率

    默认参数 按升序对结果进行排序 按字母顺序排列结果 结果中包含空值 以百分比计数显示结果 将连续数据分入离散区间 分组并调用 value_counts() 将结果系列转换为 DataFrame 应用于DataFrame...默认情况下,结果系列按降序排列,不包含任何 NA 值。例如,让我们从 Titanic 数据集中获取“Embarked”列的计数。...: int64 3、按字母顺序排列结果 我们已经学习了参数升序以获得按值计数 ASC 或 DESC 排序的结果。..., dtype: int64 5、以百分比计数显示结果 在进行探索性数据分析时,有时查看唯一值的百分比计数会更有用。...一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数。

    6.7K61

    9个value_counts()的小技巧,提高Pandas 数据分析效率

    默认参数 按升序对结果进行排序 按字母顺序排列结果 结果中包含空值 以百分比计数显示结果 将连续数据分入离散区间 分组并调用 value_counts() 将结果系列转换为 DataFrame 应用于DataFrame...默认情况下,结果系列按降序排列,不包含任何 NA 值。例如,让我们从 Titanic 数据集中获取“Embarked”列的计数。  ...int64 3、按字母顺序排列结果 我们已经学习了参数升序以获得按值计数 ASC 或 DESC 排序的结果。..., dtype: int64 5、以百分比计数显示结果 在进行探索性数据分析时,有时查看唯一值的百分比计数会更有用。...一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数。

    3K20

    9个value_counts()的小技巧,提高Pandas 数据分析效率

    1、默认参数 2、按升序对结果进行排序 3、按字母顺序排列结果 4、结果中包含空值 5、 以百分比计数显示结果 6、将连续数据分入离散区间 7、分组并调用 value_counts() 8、将结果系列转换为...默认情况下,结果系列按降序排列,不包含任何 NA 值。例如,让我们从 Titanic 数据集中获取“Embarked”列的计数。...: int64 3、按字母顺序排列结果 我们已经学习了参数升序以获得按值计数 ASC 或 DESC 排序的结果。..., dtype: int64 5、以百分比计数显示结果 在进行探索性数据分析时,有时查看唯一值的百分比计数会更有用。...一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数。

    2.5K20

    数据分组

    1.分组键是列名 分组键是列名时直接将某一列或多列的列名传给 groupby() 方法,groupby() 方法就会按照这一列或多列进行分组。...参数: ①分组键是列名: 单个列名直接写(按一列进行分组),多个列名以列表的形式传入(这就是按多列进行分 组)。...""" (1)按一列进行分组 import pandas as pd df = pd.DataFrame([[99,"A类","一线城市","是",6,20,0],...求众数、var 求方差、std 求标准差、quantile 求分位数 (2)按多列进行分组 按多列进行分组,只要将多个列名以列表的形式传给 groupby() 即可。...df.groupby(["客户分类","区域"]).sum() #只会对数据类型为数值(int,float)的列才会进行运算 无论分组键是一列还是多列,只要直接在分组后的数据进行汇总运算,就是对所有可以计算的列进行计算

    4.5K11

    python数据分析——数据分类汇总与统计

    1.1按列分组 按列分组分为以下三种模式: 第一种: df.groupby(col),返回一个按列进行分组的groupby对象; 第二种: df.groupby([col1,col2]),返回一个按多列进行分组的...groupby对象; 第三种: df.groupby(col1)[col2]或者 df[col2].groupby(col1),两者含义相同,返回按列col1进行分组后col2的值; 首先生成一个表格型数据集...gg = df.groupby(df['key1']) gg 【例1】采用函数df.groupby(col),返回一个按列进行分组的groupby对象。...print(list(gg)) 【例2】采用函数df.groupby([col1,col2]),返回一个按多列进行分组的groupby对象。...关键技术: df.groupby(col1)[col2]或者df[col2].groupby(col1),两者含义相同,返回按列col1进行分组后,col2的值。

    82310

    快速介绍Python数据分析库pandas的基础知识和代码示例

    本附注的结构: 导入数据 导出数据 创建测试对象 查看/检查数据 选择查询 数据清理 筛选、排序和分组 统计数据 首先,我们需要导入pandas开始: import pandas as pd 导入数据...info()函数用于按列获取标题、值的数量和数据类型等一般信息。一个类似但不太有用的函数是df.dtypes只给出列数据类型。...通常回根据一个或多个列的值对panda DataFrame进行排序,或者根据panda DataFrame的行索引值或行名称进行排序。 例如,我们希望按学生的名字按升序排序。...计算性别分组的所有列的平均值 average = df.groupby(‘Sex’).agg(np.mean) ? 统计数据 我们可能熟悉Excel中的数据透视表,可以轻松地洞察数据。...假设我们想按性别将值分组,并计算物理和化学列的平均值和标准差。

    8.1K20

    数据科学家私藏pandas高阶用法大全 ⛵

    , 8, 9] df # df doesn't change 图片 2:Groupby().count 与 Groupby().size 如果你想获得 Pandas 的一列的计数统计,可以使用groupby...和count组合,如果要获取2列或更多列组成的分组的计数,可以使用groupby和size组合。...:归一化值计数 大家都知道,我们可以使用value_counts获取列里的取值计数,但是,如果要获取列中某个值的百分比,我们可以添加normalize=True至value_counts参数设置来完成:...如下例,我们可以使用pandas.melt()将多列(“Aldi”、“Walmart”、“Costco”)转换为一列(“store”)的值。...在以下示例中,创建了一个新的排名列,该列按学生的分数对学生进行排名: import pandas as pd df = pd.DataFrame({'Students': ['John', 'Smith

    6.1K30

    Pandas速查手册中文版

    s.value_counts(dropna=False):查看Series对象的唯一值和计数 df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数...数据选取 df[col]:根据列名,并以Series的形式返回列 df[[col1, col2]]:以DataFrame形式返回多列 s.iloc[0]:按位置选取数据 s.loc['index_one...,后按col2降序排列数据 df.groupby(col):返回一个按列col进行分组的Groupby对象 df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象 df.groupby...(col1)[col2]:返回按列col1进行分组后,列col2的均值 df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列...col1进行分组,并计算col2和col3的最大值的数据透视表 df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值 data.apply(np.mean):对

    12.2K92

    首次公开,用了三年的 pandas 速查表!

    ,汇总 df.loc['col_sum'] = df.apply(lambda x: x.sum()) # 按指定的列表顺序显示 df.reindex(order_list) # 按指定的多列排序 df.reindex...形式返回多列 df.loc[df['team'] == 'B',['name']] # 按条件查询,只显示name 列 s.iloc[0] # 按位置选取数据 s.loc['index_one'] #...返回一个按列col进行分组的Groupby对象 df.groupby([col1,col2]) # 返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2] # 返回按列...col1进行分组后,列col2的均值 # 创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表 df.pivot_table(index=col1,...(col1).agg(np.mean) # 返回按列col1分组的所有列的均值 # 按列将其他列转行 pd.melt(df, id_vars=["day"], var_name='city', value_name

    7.5K10

    用 Pandas 进行数据处理系列 二

    获取指定的列和行 import pandas as pd df = pd.read_csv('xxxx.xls') 获取行操作df.loc[3:6]获取列操作df['rowname']取两列df[['...loc函数按标签值进行提取iloc按位置进行提取ix可以同时按标签和位置进行提取 具体的使用见下: df.loc[3]按索引提取单行的数值df.iloc[0:5]按索引提取区域行数据值df.reset_index...= 'beijing'), ['id', 'city', 'age']].sort(['id']) 筛选后的灵气按 city 列进行计数 df.loc[(df['city'] !...df.groupby(‘city’).count()按 city 列分组后进行数据汇总df.groupby(‘city’)[‘id’].count()按 city 进行分组,然后汇总 id 列的数据df.groupby...= df.groupby('Country') for index, data in df_gb: print(index) print(data) 多列分组 import pandas

    8.2K30

    妈妈再也不用担心我忘记pandas操作了

    ) # 查看DataFrame对象中每一列的唯一值和计数 数据选取: df[col] # 根据列名,并以Series的形式返回列 df[[col1, col2]] # 以DataFrame形式返回多列...=[True,False]) # 先按列col1升序排列,后按col2降序排列数据 df.groupby(col) # 返回一个按列col进行分组的Groupby对象 df.groupby([col1,...col2]) # 返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2] # 返回按列col1进行分组后,列col2的均值 df.pivot_table(index=col1..., values=[col2,col3], aggfunc=max) # 创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表 df.groupby(col1).agg(np.mean...) # 返回按列col1分组的所有列的均值 data.apply(np.mean) # 对DataFrame中的每一列应用函数np.mean data.apply(np.max,axis=1) # 对DataFrame

    2.2K31

    Pandas速查卡-Python数据科学

    df.info() 索引,数据类型和内存信息 df.describe() 数值列的汇总统计信息 s.value_counts(dropna=False) 查看唯一值和计数 df.apply(pd.Series.value_counts...) 所有列的唯一值和计数 选择 df[col] 返回一维数组col的列 df[[col1, col2]] 作为新的数据框返回列 s.iloc[0] 按位置选择 s.loc['index_one'] 按索引选择...df.groupby(col) 从一列返回一组对象的值 df.groupby([col1,col2]) 从多列返回一组对象的值 df.groupby(col1)[col2] 返回col2中的值的平均值...,按col1中的值分组(平均值可以用统计部分中的几乎任何函数替换) df.pivot_table(index=col1,values=[col2,col3],aggfunc=max) 创建一个数据透视表...,按col1分组并计算col2和col3的平均值 df.groupby(col1).agg(np.mean) 查找每个唯一col1组的所有列的平均值 data.apply(np.mean) 在每个列上应用函数

    9.2K80

    总结了67个pandas函数,完美解决数据处理,拿来即用!

    Series对象的唯⼀值和计数 df.apply(pd.Series.value_counts) # 查看DataFrame对象中每⼀列的唯⼀值和计数 df.isnull().any() # 查看是否有缺失值...df[col] # 根据列名,并以Series的形式返回列 df[[col1,col2]] # 以DataFrame形式返回多列 s.iloc[0] # 按位置选取数据 s.loc['index_one...col2降序排列数据 df.groupby(col) # 返回⼀个按列col进⾏分组的Groupby对象 df.groupby([col1,col2]) # 返回⼀个按多列进⾏分组的Groupby对象...df.groupby(col1)[col2].agg(mean) # 返回按列col1进⾏分组后,列col2的均值,agg可以接受列表参数,agg([len,np.mean]) df.pivot_table...、最⼩值的数据透视表 df.groupby(col1).agg(np.mean) # 返回按列col1分组的所有列的均值,⽀持 df.groupby(col1).col2.agg(['min','max

    3.5K30

    数据整合与数据清洗

    选择多列。ix、iloc、loc方法都可使用。 只不过ix和loc方法,行索引是前后都包括的,而列索引则是前包后不包(与列表索引一致)。 iloc方法则和列表索引一致,前包后不包。...# 删除单列 print(df.drop('date', axis=1)) # 删除多列 print(df.drop(['praise', 'date'], axis=1)) 输出结果。 ? ?...05 排序 Pandas的排序方法有以下三种。 sort_values、sort_index、sortlevel。 第一个表示按值排序,第二个表示按索引排序,第三个表示按级别排序。...# 对性别分组,汇总点赞数,获取点赞数最大值 print(df.groupby('gender')[['praise']].max()) # 对性别和年龄分组,获取点赞数的平均值 print(df.groupby...'age']].mean()) # 对性别分组,获取性别的计数值 print(df.groupby(['gender'])[['gender']].count()) # 多重索引 print(df.groupby

    4.6K30
    领券