pandas日常数据处理

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/weixin_35757704/article/details/89789732

这篇博客总结一些pandas的常用处理方法,直接结合例子,使用时直接复制代码即可,希望能够帮助到大家。

这里面series表示Series类型对象,dataframe表示Dataframe类型对象,使用替换变量名即可。

目录

1 行/列/单元格 选择

1.1 通过索引选择

1.2 通过位置选择

1.3 得到指定区域/单元格

2 循环处理数据

2.1 直接循环行

2.2 循环Dataframe的每一行/列 apply()

2.3 循环Series的每一行 map()

2.4 循环处理每个元素 applymap()

3 内容筛选

3.1 根据索引删除行/列

3.2 按条件筛选

3.3 特殊筛选方法

3.3.1 去掉重复数据

3.3.2 去掉空值

4 索引/数值/类型替换

4.1 转置

4.2 修改行/列索引

参考资料:


1 行/列/单元格 选择

1.1 通过索引选择

选择行(2种方法):

dataframe.loc[行索引]
dataframe.loc[[行索引],:]

选择列(2种方法):

dataframe[列索引]
dataframe.loc[:,[列索引]]

1.2 通过位置选择

(用法与通过下标选择神似)

选择行(2种方法):

dataframe.iloc[行位置] # 0为第一个
dataframe.iloc[[行位置],:]

选择列(2种方法):

dataframe[列位置]
dataframe.loc[:,[列位置]]

1.3 得到指定区域/单元格

通过行索引+列索引得到指定区域:

dataframe.loc[[行索引],[列索引]] # 可以直接得到单元格的值

通过行位置+列位置得到指定区域:

dataframe.iloc[[行位置],[列位置]]

当 索引or位置为一个具体的值的时候就会锁定唯一的单元格

2 循环处理数据

2.1 直接循环行

这个方法暴力简单,博主初学的时候经常这样做...

循环Dataframe的每一行:

for index,row in df.iterrows():
    # index 为行索引
    # row 为Dataframe这一行数据组成的Series类型的对象
    # 使用 row['列索引']得到想要的具体值

循环Series的每一行:

for row in series:
    # row就是每一行的数据

2.2 循环Dataframe的每一行/列 apply()

逐行循环:

def sov(x):
    # return x[列索引] # 相当于逐行读取Dataframe

dataframe.apply(sov,axis=1)

逐列循环:

def sov(x):
    # return x[0] # x为每一列构成的Series

dataframe.apply(sov)

2.3 循环Series的每一行 map()

def sov(x):
    # return x # 对Series每个元素的处理逻辑

dataframe[索引].map(sov)

2.4 循环处理每个元素 applymap()

def sov(x):
    # return x # 对Dataframe每个元素的处理逻辑

dataframe.applymap(sov)

它会先逐列,再逐个地循环执行函数

3 内容筛选

3.1 根据索引删除行/列

删除列:

dataframe.drop([列索引],axis=1,inplace=True) # 直接在原有dataframe上处理,不需要接收返回值

删除行:

dataframe.drop([行索引],axis=0,inplace=True) # 直接在原有dataframe上处理,不需要接收返回值

3.2 按条件筛选

请看这篇博客:https://blog.csdn.net/weixin_35757704/article/details/89280715#2.2.1%20%E6%A0%B9%E6%8D%AE%E7%A1%AE%E5%AE%9A%E6%9D%A1%E4%BB%B6%E7%AD%9B%E9%80%89%E6%95%B0%E6%8D%AE

3.3 特殊筛选方法

3.3.1 去掉重复数据

Series经过处理后,原来series中每个不同的值都只会出现一次。

series.drop_duplicates(inplace=True)

Dataframe同样适用这个方法处理数据

dataframe.drop_duplicates(inplace=True)

3.3.2 去掉空值

dataframe.dropna(inplace=True)

4 索引/数值/类型替换

4.1 转置

dataframe.T

4.2 修改行/列索引

修改行索引:

dataframe.index = [新行索引]
# 行索引的总数需要与行数相等
# dataframe.index = list(range(0,dataframe.shape[0])) # 直接得到从0开始递增的下标序列

修改列索引:

dataframe.columns = [新的列索引] # 索引总数与列数相等

# 下面的代码可以生成从0开始递增的列索引
#dataframe.columns = list(range(0,dataframe.shape[1]))

参考资料:

Pandas选取行,列总结:https://www.jianshu.com/p/32bfb327bf07

DataFrame的apply()、applymap()、map()方法:https://blog.csdn.net/qq_20412595/article/details/81131502

猜你喜欢

转载自blog.csdn.net/weixin_35757704/article/details/89789732