对csv文件进行分组和排序详解(使用面部表情数据集fer2013)
文章目录
- 读取csv文件
- 获取指定列并计算它出现的次数
- 对指定列统计出现次数
- 按多列进行分组排序
- 按多列进行分组排序并转换常规索引
- 对统计的次数进行从小到大的顺序进行排序
- 对统计的次数进行从大到小的顺序进行排序
- 按多个列进行排序
- 第一列从小到大,第二列从大到小排序
使用的是面部表情fer2013数据集:
Kaggle链接:链接
百度云链接:https://pan.baidu.com/s/1P_RAqH_SWD9xLqYOA3aElw ,提取码:8m8p
读取csv文件
# 使用 pandas 读取csv文件
import pandas as pd
# 读取fer2013数据集,人脸表情数据集
fer2013 = pd.read_csv("data/fer2013/fer2013.csv")
获取指定列并计算它出现的次数
使用groupby()获取emotion列并计算它出现的次数
# 使用groupby()获取emotion列并计算它出现的次数
fer2013.groupby('emotion').emotion.count()
对指定列统计出现次数
groupby()
方法是agg() ,它允许在 DataFrame 上运行一堆不同的函数。
例如,我们可以生成数据集的简单统计摘要,如下所示:
# groupby()方法是agg() ,它允许在 DataFrame 上运行一堆不同的函数。
# 例如,我们可以生成数据集的简单统计摘要,如下所示:
fer2013.groupby('emotion').emotion.agg([len, min, max])
按多列进行分组排序
按多列进行分组,emotion和Usage中获取训练集、测试集的数据量,多索引
# 按多列进行分组,emotion和Usage中获取训练集、测试集的数据量,多索引
fer2013.groupby(['emotion', 'Usage']).Usage.agg([len])
按多列进行分组排序并转换常规索引
多索引方法是转换回常规索引的方法,即reset_index()方法
# 多索引方法是转换回常规索引的方法,即reset_index()方法
fer2013_usage = fer2013.groupby(['emotion', 'Usage']).Usage.agg([len])
fer2013_usage.reset_index()
对统计的次数进行从小到大的顺序进行排序
可以看到emotion和Usage中获取训练集、测试集的数据量不是按多少进行排序
按照从小到大的顺序进行排序,通过by属性(Usage.agg([len])
# 可以看到emotion和Usage中获取训练集、测试集的数据量不是按多少进行排序
# 按照从小到大的顺序进行排序,通过by属性(Usage.agg([len])
fer2013_usage = fer2013.groupby(['emotion', 'Usage']).Usage.agg([len])
fer2013_usage.sort_values(by='len')
对统计的次数进行从大到小的顺序进行排序
降序排序,即数字较大的排在前面。
fer2013_usage = fer2013.groupby(['emotion', 'Usage']).Usage.agg([len])
# 降序排序,即数字较大的排在前面。
fer2013_usage.sort_values(by='len', ascending=False)
按多个列进行排序
按多个列进行排序:先emotion,后数据集划分Usage
fer2013_usage = fer2013.groupby(['emotion', 'Usage']).Usage.agg([len])
# 按多个列进行排序:先emotion,后数据集划分Usage
fer2013_usage.sort_values(by=['emotion','len'])
第一列从小到大,第二列从大到小排序
第一列从小到大,第二列从大到小排序
fer2013_usage = fer2013.groupby(['emotion', 'Usage']).Usage.agg([len])
# 第一列从小到大,第二列从大到小排序
fer2013_usage.sort_values(by=['emotion', 'len'], ascending=[True, False])