数据分析—利⽤pandas对数据进⾏合并、筛选以及排序等操作

【导语】学会利⽤pandas对数据进⾏合并、筛选以及排序等操作

一、数据合并(两种方法)

①concat
import pandas as pd
import numpy as np
df = pd.DataFrame([[2,5, 7, 4,9],
                  [3, np.nan, np.nan,np.nan, 1],
                 [2,1, np.nan, np.nan, 5],
                [4,2, 3, np.nan, 4]],
                 columns=list('ABCDE'))

df1 = pd.DataFrame([[1,2,3,4,5],
                  [3, 0, 0,0, 1],
                 [2,1, 0, 0, 5],
                [4,2, 3, 0, 4]],
                 columns=list('ABCDE'))
pd.concat([df,df1],axis=0,join='outer',ignore_index=True)

各个参数的含义为:

  • [df,df1]是我们要合并的数据,我们把他放在⼀个列表当中传⼊
  • axis=0 表示按⾏进⾏合并,如果为1表示按列进⾏合并
  • join='outer' 表示直接拼接在⼀块,如果为 inner则是按交集处理
  • ignore_index=True 表示重新⽣成索引
运行结果:
image.png
②merge
格式:merge(left, right, how='inner', on=None,left_on =None,right_on =None,left_index =None,right_index =None)

各参数含义为:

  • left和right是我们要合并的数据
  • how则是指定拼接⽅式 inner(默认)表示取交集部分 outer是直接拼接在⼀块,没内容的地⽅⽤ NAN填充
  • on是指定我们需要按照哪列进⾏拼接
  • left_on 左侧DataFarme中用作连接键的列
  • right_on 右侧DataFarme中用作连接键的列
  • left_index 将左侧的行索引用作其连接键
  • right_index 将右侧的行索引用作其连接键
1.merge默认按相同字段合并,且取两个都有的。
import pandas as pd
df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],
'age':[25,28,39,35]})

df2=pd.DataFrame({'name':['kate','herz','sally'],
'score':[70,60,90]})
pd.merge(df1,df2)

age name score
0 25 kate 70
1 28 herz 60
2 35 sally 90

2.当左右连接字段不相同时,使用left_on,right_on
import pandas as pd
df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],
'age':[25,28,39,35]})

df2=pd.DataFrame({'call_name':['kate','herz','sally'],
'score':[70,60,90]})

pd.merge(df1,df2,left_on="name",right_on='call_name'

age name call_name score
0 25 kate kate 70
1 28 herz herz 60
2 35 sally sally 90

3.合并后,删除重复的列
pd.merge(df1,df2,left_on='name',right_on='call_name').drop('name',axis=1)

age call_name score
0 25 kate 70
1 28 herz 60
2 35 sally 90

4.参数how的使用
  • 1)默认:inner 内连接,取交集

    pd.merge(df1,df2,on='name',how='inner')
    

age name score
0 25 kate 70
1 28 herz 60
2 35 sally 90

  • 2)outer 外连接,取并集,并用nan填充
df3=pd.DataFrame({'name':['kate','herz','sally','cristin'],
'score':[70,60,90,30]})
pd.merge(df1,df3,on='name',how='outer')

age name score
0 25 kate 70
1 28 herz 60
2 39 catherine NaN
3 35 sally 90
4 NaN cristin 30

  • 3)left 左连接, 左侧取全部,右侧取部分
pd.merge(df1,df3,on='name',how='left')

age name score
0 25 kate 70
1 28 herz 60
2 39 catherine NaN
3 35 sally 90

  • 4)right 有连接,左侧取部分,右侧取全部
pd.merge(df1,df3,on='name',how='right')

age name score
0 25 kate 70
1 28 herz 60
2 35 sally 90
3 NaN cristin 30

二、数据筛选

首先判断我们筛选的条件,如果条件成立则会返回True,表示该行被标记为True,否则被标 记为False,最后我们根据标记的True或者False来筛选出我们需要的数据,举个栗子

bools= df1['age']>25

df1['age']>25就是我们筛选的条件,我们将标记的结果赋值给bools,那么他是⼀个⼀维 数组Series对象,我们再利用

df = df1[bools]

就可以取到筛选后的数据了 如果有多个筛选条件那么就是⽤逻辑连接符链接起来即可,⽐如

bool1= df['age']>25
bool2= df1['age']<30
df3 = df1[bool1 & bool2]
& 与 ; | 或者

三、数据排序

数据排序同样是有两个⽅法sort_index()、sort_values(),这个排序跟我们列表排序的sort是 类似的,都是直接修改数据而不会生成一个新的数据。

1、sort_index( )方法是按照行索引进行排序
  • inplace=True参数和我们之前⻅过的作⽤⼀样,⽤来控制是否直接对原始数据进⾏修改。
  • ascending可以控制排序的顺序,默认值为True从⼩到⼤排列,当它被设置为False的时候 就可以实现倒序排列。
df1.sort_index(ascending=False,inplace=True)
2、sort_values()可以指定具体列进行排序,它比sort_index( )方法多了一个参数by
  • by:决定了是按数据中的哪一列进行排序,将需要按照某列排序的列名赋值给by即可
  • inplace=True参数和我们之前⻅过的作⽤⼀样,⽤来控制是否直接对原始数据进⾏修改。
  • ascending可以控制排序的顺序,默认值为True从⼩到⼤排列,当它被设置为False的时候 就可以实现倒序排列。
df1.sort_values(by='age',ascending=False,inplace=True)

希望本文的内容对大家的学习或者工作能带来一定的帮助,每天进步一点点,加油

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352