欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

搞定排序!pandas系列之Series和DataFrame的排序技巧

最编程 2024-01-15 13:20:39
...
介于自己经常忘掉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
"""

希望以后这种简单操作不要再忘了,多用才能记住啊~~