Pandas常用操作命令(三)

简介: Pandas常用操作命令(三)

大家好,我是欧K。


本期为大家带来Pandas常用操作命令介绍的第三篇,主要介绍pandas的数据排序、分组部分常用到一些指令,本系列会不断进行补充更新希望对你有所帮助。

👉系列文章
Pandas常用操作命令(一)
Pandas常用操作命令(二)


5. 排序


示例数据:

以test.csv文件为例:

filename = 'test.csv'
df = pd.read_csv(filename, encoding='gbk')
df

# 重命名列
df.columns = ['姓名','性别','语文','数学','英语','城市','省份']

5.1 拆分列,生成新的Dataframe

df1 = df['姓名'].str.split('-',expand=True)
df1.columns = ['学号','姓名']
df1['性别'] = df['性别']
df1['语文'] = df['语文']
df1['数学'] = df['数学']
df1['英语'] = df['英语']
df1['城市'] = df['城市']
df1['省份'] = df['省份']
df1.dropna(inplace = True)


5.2 重置索引

df_last = df1.reset_index(drop=True)

5.2 按照语文成绩升序排序,默认升序排列


df_last.sort_values('语文')


5.3 按照数学成绩降序排序

df_last.sort_values('数学', ascending=False)


5.4 先按语文成绩升序排列,再按数学成绩降序排列

df_last.sort_values(['语文','数学'], ascending=[True,False])


5.5 语文成绩80及以上

df_last[df_last['语文']>=80]
df_last.query('语文 > 80')


5.6 语文成绩80及以上以及数学成绩90分及以上

df_last[(df_last['语文']>=80) & (df_last['数学']>=90)]

5.7 语文成绩80及以上或数学成绩90分及以上

df_last[(df_last['语文']>=80) | (df_last['数学']>=90)]


5.8输出成绩100的行和列号

row,
col = np.where(df_last.values ==
100)
print('%s\t%s'%(row,col))
[0 7] [4 5]


5.9 增加一列“省份-城市”

df_last['省份-城市'] = df_last['省份'] +
'-' + df_last['城市']


5.10 增加一列总分

df_last['总分'] = df_last[['语文','数学','英语']].sum(axis =
1)


5.11 按照总分、语文、数学、英语成绩依次排序

df_last.sort_values(by =['总分','语文','数学','英语'],ascending=False)


5.12 新增一列表示学生语文成绩等级的列(优秀、良好、中等、不及格)

def get_letter_grade(score):
    if score>=90:
        return '优秀'
    elif score>=80:
        return '良好'
    elif score>=60:
        return '中等'
    else:
        return '不及格'
df_last['语文等级'] = df_last['语文'].apply(lambda score: get_letter_grade(score))

6. 数据分组


df2:

6.1 一列分组

df2.groupby('省份').groups

{'上海': ['009'], '广东': ['003', '010'], '江苏': ['001', '013'], '浙江': ['011'], '海南': ['005'], '重庆': ['007']}

6.2 多列分组


df2.groupby(['省份','城市']).groups


{('上海', '上海'): ['009'], ('广东', '广州'): ['003'], ('广东', '深圳'): ['010'], ('江苏', '南京'): ['001', '013'], ('浙江', '杭州'): ['011'], ('海南', '海口'): ['005'], ('重庆', '重庆'): ['007']}

6.3 每组的统计数据(横向显示)

df2.groupby('省份').describe()

6.4 每组的统计数据(纵向显示)

df2.groupby('省份').describe().unstack()


6.5 查看指定列的统计信息

df2.groupby('省份').describe()['语文']

6.6 分组大小

df2.groupby('省份').count()
df2.groupby('省份').agg(np.size)



6.7 分组成绩最大值

df2.groupby('省份').max()
df2.groupby('省份').agg(np.max)

6.8 分组成绩最小值

df2.groupby('省份').min()
df2.groupby('省份').agg(np.min)

6.9 分组成绩总和

df2.groupby('省份').sum()
df2.groupby('省份').agg(np.sum)

6.10 分组平均成绩

df2.groupby('省份').mean()
df2.groupby('省份').agg(np.mean)


6.11 按省份分组,计算英语成绩总分和平均分

df2.groupby('省份')['英语'].agg([np.sum, np.mean])


6.12 按省份、城市分组计算平均成绩

df2.groupby(['省份','城市']).agg(np.mean)

6.13 不同列不同的计算方法

df2.groupby('省份').agg({'语文': sum,
# 总和
                        '数学':
'count',
# 总数
                        '英语':'mean'})
# 平均


6.14 性别分别替换为1/0

df2 = df2.dropna()
df2['性别'] = df2['性别'].map({'男':1, '女':0})


6.15 增加一列按省份分组的语文平均分

df2['语文平均分'] = df2.groupby('省份')['语文'].transform('mean')

6.16 输出语文成绩最高的男生和女生(groupby默认会去掉空值)

def get_max(g):
    df = g.sort_values('语文',ascending=True)
    print(df)
    return df.iloc[-1,:]
df2.groupby('性别').apply(get_max)

6.17 按列省份、城市进行分组,计算语文、数学、英语成绩最大值的透视表

df.pivot_table(index=['省份','城市'], values=['语文','数学','英语'], aggfunc=max)


未完待续。。。


END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道。

相关文章
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(四)
|
存储 数据挖掘 索引
【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作
【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作
94 0
|
数据采集 索引 Python
Pandas常用操作命令(二)
Pandas常用操作命令(二)
Pandas常用操作命令(二)
|
SQL 数据采集 JSON
Pandas常用操作命令(一)
Pandas常用操作命令(一)
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(七)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(七)
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(六)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(六)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(五)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(五)
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(三)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(三)
|
索引 Python
Pandas中DataFrame的属性、方法、常用操作以及使用示例(二)
Pandas中DataFrame的属性、方法、常用操作以及使用示例(二)

热门文章

最新文章