介于自己经常忘掉pandas的数据排序操作,这里做一个常用方法的整理,示例数据使用的知乎数据:
- 先导入并用groupby分别生成一个Series和DataFrame示例数据:
import pandas as pd
path = "./知乎数据_201701.csv"
data = pd.read_csv(path,engine='python')
series = data.groupby("职业1").size()
frame = data.groupby("所在行业")["关注的问题","关注的话题"].sum()
print(type(series))
print(serie.head())
print(type(frame))
print(frame.head())
#输出如下:
"""
<class 'pandas.core.series.Series'>
职业1
交通仓储 578
信息传媒 1411
公共服务 2754
农林牧渔 462
制造加工 3345
dtype: int64
<class 'pandas.core.frame.DataFrame'>
关注的问题 关注的话题
所在行业
?? 62 74
临床医疗 203987 28070
互联网 1848010 338690
交通仓储 28174 4017
人力资源 81371 13468
"""
-
对Series数据进行排序:
- series.sort_values()与 sort_index()分别按照值、索引进行排序。
- ascending参数默认为True,对values升序排序;
- inplace参数默认为False,当指定inplace=True时,将同时修改原数据。
以sort_values()为例:
s = series.sort_values(ascending=False)
print(s.head())
#输出如下,对values进行了降序排列:
"""
职业1
高新科技 10595
金融 4196
制造加工 3345
服务业 3068
公共服务 2754
dtype: int64
"""
-
对DataFrame数据进行排序:
- 与Series相似,Dataframe也有按sort_values()与 sort_index()分别按照值、索引进行排序。
- 参数by=“columns_name”指定排序值参考列,默认ascending=True按升序排序,指定inplace=True,将同时修改原数据。。
- 可传入axis=1,按行标签排序,不过用到的时候貌似不多。
df1 = frame.sort_values(by="关注的问题",ascending=False)
print(df1.head())
#输出如下,按“关注的问题”列进行降序排序:
"""
关注的问题 关注的话题
所在行业
互联网 1848010 338690
计算机软件 979808 180918
高等教育 540299 119766
高新科技 530060 87961
金融 498247 93680
"""
df2 = frame.sort_values(by="关注的话题",ascending=True).drop("??")
df2.head()
#输出如下,按"关注的话题"列进行升序排序:
"""
关注的问题 关注的话题
所在行业
?? 62 74
疗养服务 147 122
管线运输 430 122
造纸业 2537 251
美容 801 602
"""
希望以后这种简单操作不要再忘了,多用才能记住啊~~
网友评论