python数字排序分组

编程入门 行业动态 更新时间:2024-10-24 07:35:29

python<a href=https://www.elefans.com/category/jswz/34/1771323.html style=数字排序分组"/>

python数字排序分组

原标题:R与Python手牵手:数据的分组排序

作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。

邮箱:huang.tian-yuan@qq

这次介绍如何在Python与R中进行表格数据的分组排序,也就是分组进行统一运算,以及按照规则进行排列。

Python#载入模块 import pandas as pd import numpy as np import matplotlib.pylab as plt #载入数据 edu = pd.read_csv('G:/Py/introduction-datascience-python-book-master/files/ch02/educ_figdp_1_Data.csv', na_values=':', usecols=['TIME', 'GEO', 'Value']) #na_values是把“:”符号认为是缺失值的意思

数据可以在以下网址取得:

排序#按照Value从大到小排序,ascending控制正序倒序,inplace控制是否在原数据集进行修改 edu.sort_values(by='Value', ascending=False, inplace=True) edu.head()

TIME

GEO

Value

130

2010

Denmark

8.81

131

2011

Denmark

8.75

129

2009

Denmark

8.74

121

2001

Denmark

8.44

122

2002

Denmark

8.44

#返回原始排序 edu.sort_index(axis=0, ascending=True, inplace=True) edu.head()

TIME

GEO

Value

0

2000

European Union (28 countries)

NaN

1

2001

European Union (28 countries)

NaN

2

2002

European Union (28 countries)

5.00

3

2003

European Union (28 countries)

5.03

4

2004

European Union (28 countries)

4.95

由此,我们也可以发现,无论我们怎么进行排序,原始的行号是一直得以保存的,有了这个我们就可以从新恢复数据的排序。

分组#根据GEO分组得到组内的平均值 group = edu[['GEO', 'Value']].groupby('GEO').mean() group.head()

Value

GEO

Austria

5.618333

Belgium

6.189091

Bulgaria

4.093333

Cyprus

7.023333

Czech Republic

4.168333

整合

filtered_data = edu[edu['TIME'] > 2005] pivedu = pd.pivot_table(filtered_data, values='Value', index=['GEO'], columns=['TIME']) pivedu.head()

TIME

2006

2007

2008

2009

2010

2011

GEO

Austria

5.40

5.33

5.47

5.98

5.91

5.80

Belgium

5.98

6.00

6.43

6.57

6.58

6.55

Bulgaria

4.04

3.88

4.44

4.58

4.10

3.82

Cyprus

7.02

6.95

7.45

7.98

7.92

7.87

Czech Republic

4.42

4.05

3.92

4.36

4.25

4.51

pivedu.loc[['Spain', 'Portugal'], [2006, 2011]]

TIME

2006

2011

GEO

Spain

4.26

4.82

Portugal

5.07

5.27

R

下面看看R语言中实现相同操作的步骤:

#加载包与数据读取 library(tidyverse) edu = read_csv('G:/Py/introduction-datascience-python-book-master/files/ch02/educ_figdp_1_Data.csv', na=":") %>% select(TIME,GEO,Value)-- Attaching packages --------------------------------------- tidyverse 1.2.1 -- √ ggplot2 3.0.0 √ purrr 0.2.5 √ tibble 1.4.2 √ dplyr 0.7.6 √ tidyr 0.8.1 √ stringr 1.3.1 √ readr 1.1.1 √ forcats 0.3.0 -- Conflicts ------------------------------------------ tidyverse_conflicts() -- x dplyr::filter() masks stats::filter() x dplyr::lag() masks stats::lag() Parsed with column specification: cols( TIME = col_integer(), GEO = col_character(), INDIC_ED = col_character(), Value = col_double(), `Flag and Footnotes` = col_character() )排序edu %>% arrange(desc(Value)) %>% head

TIME

GEO

Value

2010

Denmark

8.81

2011

Denmark

8.75

2009

Denmark

8.74

2001

Denmark

8.44

2002

Denmark

8.44

2004

Denmark

8.43

首先,要知道desc()加在Value前,就会变为降序排列,否则默认为升序。

这里,如果需要在原始数据中变更,赋值给本身即可,其实在原始数据中改数据是极其危险的,不推荐,应该总是用copy来操作,如果出错了随时回到原始备份再次copy。

分组edu %>% select(GEO,Value) %>% #选择指定列group_by(GEO) %>% #按照GEO分组summarize (Value = mean(Value,na.rm = T)) %>% #按照分组计算Value的均值,忽略缺失值head() #取前几行进行展示

GEO

Value

Austria

5.618333

Belgium

6.189091

Bulgaria

4.093333

Cyprus

7.023333

Czech Republic

4.168333

Denmark

8.331667

整合

#加载包与数据读取 library(tidyverse) edu = read_csv('G:/Py/introduction-datascience-python-book-master/files/ch02/educ_figdp_1_Data.csv', na=":") %>% select(TIME,GEO,Value)

GEO

2006

2007

2008

2009

2010

2011

Austria

5.40

5.33

5.47

5.98

5.91

5.80

Belgium

5.98

6.00

6.43

6.57

6.58

6.55

Bulgaria

4.04

3.88

4.44

4.58

4.10

3.82

Cyprus

7.02

6.95

7.45

7.98

7.92

7.87

Czech Republic

4.42

4.05

3.92

4.36

4.25

4.51

Denmark

7.97

7.81

7.68

8.74

8.81

8.75

分析

同样的步骤,不同的表达,大同小异。

温馨提示

后面所有的教程都会坚持用最简单的例子,这样有一点不会的同学也能够很容易通过查询进行扩展。如果个别函数不知道如何使用,请使用?来查询使用方法,如R中“?spread”。

今日

推荐

对话大数据系列技术

从破冰到精进

责任编辑:

更多推荐

python数字排序分组

本文发布于:2024-02-07 08:34:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755056.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数字   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!