pandas dataframe的一些常用操作方法

1 定义生成dataframe

import pandas as pd
df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[3,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

输出:


	A	B	C	D	E	F
0	1	4	3	1	5	7
1	2	5	8	3	3	4
2	3	6	9	5	6	3

2 根据列的值,取多行数据

df[df['A']==2]
或
df.loc[df['A']==2]

输出

	A	B	C	D	E	F
1	2	5	8	3	3	4

3 筛选某一列为某些取值的行数据

df[df['A'].isin(['1', '3'])]

输出

	A	B	C	D	E	F
0	1	4	3	1	5	7
2	3	6	9	5	6	3

4 对nan值进行填充0
空值:在pandas中的空值是""
缺失值:在dataframe中为nan或者naT(缺失时间),在series中为none或者nan即可

生成dataframe

import numpy as np
df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[np.nan,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
# 输出:
   A  B    C  D  E  F
0  1  4  NaN  1  5  7
1  2  5  8.0  3  3  4
2  3  6  9.0  5  6  3

找到存在空值nan的行

print(df[df.isnull().T.any()])
# 输出
   A  B   C  D  E  F
0  1  4 NaN  1  5  7

其中,isnull()能够判断数据中元素是否为空值;T为转置;any()判断该行是否有空值

用0填充空值

print(df.fillna(value=0))

# 输出:
   A  B    C  D  E  F
0  1  4  0.0  1  5  7
1  2  5  8.0  3  3  4
2  3  6  9.0  5  6  3

5 其他一些函数具体解释
来自博客:https://blog.csdn.net/lwgkzl/article/details/80948548
df.dropna()

df.fillna()

df.isnull()

df.isna()

DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
函数作用:删除含有空值的行或列

axis:维度,axis=0表示index行,axis=1表示columns列,默认为0

how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列

thresh:一行或一列中至少出现了thresh个才删除。

subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)

inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。

6 筛选操作
6.1 定义dataframe

import pandas as pd
import numpy as np
dict_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
         'Kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
         'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
         'Year':[2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
         'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(dict_data)
df

输出结果:

	Points	Rank	Team	Year
0	876		1		Riders	2014
1	789		2		Riders	2015
2	863		2		Devils	2014
3	673		3		Devils	2015
4	741		3		Kings	2014
5	812		4		Kings	2015
6	756		1		Kings	2016
7	788		1		Kings	2017
8	694		2		Riders	2016
9	701		4		Royals	2014
10	804		1		Royals	2015
11	690		2		Riders	2017

6.2 根据多列去重,按Rank和Team去重

df_drop = df.drop_duplicates(subset=['Rank','Team'])  # 默认keep=‘first’
df_drop

输出:

	Points	Rank	Team	Year
0	876		1		Riders	2014
1	789		2		Riders	2015
2	863		2		Devils	2014
3	673		3		Devils	2015
4	741		3		Kings	2014
5	812		4		Kings	2015
6	756		1		Kings	2016
9	701		4		Royals	2014
10	804		1		Royals	2015

6.3 根据Team分组,找出大于等于3的数据

df_drop_group = df_drop.groupby('Team').filter(lambda x: len(x) >= 3)
df_drop_group

输出:

	Points	Rank	Team	Year
4	741		3		Kings	2014
5	812		4		Kings	2015
6	756		1		Kings	2016

6.4 按一列去重,按Team去重

df_drop_group_keep = df_drop_group.drop_duplicates(subset=['Team'],keep='last')
df_drop_group_keep

输出:

	Points	Rank	Team	Year
6	756		1		Kings	2016

参数解释:
subset: 列名,默认所有的列

keep: 是否保留{‘first’, ‘last’, False},keep= ‘first’ 表示去重时每组重复数据保留第一条数据,其余数据丢弃; keep=‘last’ 表示去重时每组重复数据保留最后一条数据,其余数据丢弃;keep=False 表示去重时每组重复数据全部丢弃,不保留

inplace: 是否替换{False, True},inplace=False表示去重之后不覆盖原表格数据,inplace=True表示去重之后原表格数据被覆盖

6.5 删除指定的某些数据值
在最原来的df这个dataframe中,删除和df_drop_group_keep这个dataframe中相同的Team和Rank值的数据

df = df[~(df['Team'].isin(df_drop_group_keep['Team']) & df['Rank'].isin(df_drop_group_keep['Rank']))]
df

输出:

	Points	Rank	Team	Year
0	876		1		Riders	2014
1	789		2		Riders	2015
2	863		2		Devils	2014
3	673		3		Devils	2015
4	741		3		Kings	2014
5	812		4		Kings	2015
8	694		2		Riders	2016
9	701		4		Royals	2014
10	804		1		Royals	2015
11	690		2		Riders	2017

7 dataframe写csv文件

df.to_csv('out.zip', index=False)

8 dataframe读取csv文件或excel文件

df = pd.read_csv("file.csv", encoding="utf-8")
df = pd.read_excel("file.xlsx", encoding="utf-8")
Pandas是一个流行的Python数据处理库,在数据处理的过程中,合并数据框是非常常见的操作。在Pandas中,数据框的合并有多个方法,我们可以根据不同的需求和数据类型选择合适的方式进行处理。 Pandas提供的合并方法主要有concat、merge和join。 1. concat方法 concat方法是将多个数据框沿着轴方向进行合并,轴方向可以是行或者列。常用的轴方向是行方向,行方向的合并可以将多个数据框按照行顺序堆叠在一起,成为一个更大的数据框。当然,也可以进行列方向的合并,此时需要保证数据框的行数一致。 语法:pd.concat([df1,df2,df3], axis=0, join='outer') df1,df2,df3表示需要合并的数据框,axis=0表示按照行合并,join='outer'表示合并后的数据框保留所有的行和列。 2. merge方法 merge方法是将多个数据框按照指定的一组或多组键进行合并。例如,我们可以按照某一列(或多列)的值进行合并,类似于SQL中的Join操作。 语法:pd.merge(df1,df2, on='key') df1和df2表示需要合并的数据框,on表示合并的列名。在合并时,列名必须在两个数据框中都存在。 3. join方法 join方法是将多个数据框按照索引进行合并,类似于SQL中的自然连接操作。此时需要保证多个数据框具有相同的索引。 语法:df1.join(df2, how='outer') df1和df2表示需要合并的数据框,how表示合并的方式。默认情况下,how='left'表示按照左侧数据框的索引进行合并,保留左侧数据框的全部行,如果右侧数据框的索引不存在于左侧数据框中,则相应的列填充NaN值。如需要保留所有的行和列,则how='outer'。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值