【pandas】(六)增删改查

文章目录

  • 一、增加数据
    • 1.1 增加一行
    • 1.2 增加一列
    • 1.3 pd.concat()拼接数据
      • (1)objs:Series,DataFrame或Panel对象的**序列或映射**。
      • (2)axis:{0,1,...},默认为0。纵向拼接。
      • (3)join:{'inner','outer'},默认为“outer”。如何处理其他轴上的索引。outer为联合和inner为交集。
      • (4)ignore_index:boolean,default False。如果为True,索引重新排序。
      • (5)join_axes:Index对象列表。outer外联之后,设置该参数能达到左连接和右连接的功能。
      • (6)keys:序列,默认值无。使用传递的键作为最外层构建层次索引。如果为多索引,应该使用元组。
    • 1.4 pd.append()拼接数据
      • (1)other,可以是dataframe,可以是series
      • (2)ignore_index:boolean,default False。如果为True,索引重新排序。
  • 二、删除数据
    • 2.1 df.drop()
      • (1)labels 就是要删除的行列的名字,用列表给定
      • (2)axis 默认为0,指删除行,因此删除columns时要指定axis=1;
      • (3)index 直接指定要删除的行
      • (4)columns 直接指定要删除的列
      • (5)inplace,默认=False该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe;inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。
    • 2.2 df.drop_duplicates()删除重复数据
      • (1)subset : column label or sequence of labels, 用来指定特定的列,默认所有列
      • (2)keep='first',默认保留一条重复记录
      • (3)inplace,默认=False该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe;inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。
    • 2.3 求dataframe差集
  • 三、修改数据
    • 3.1 df.fillna()填充空值
      • (1)value : 变量, 字典, Series, or DataFrame
      • (2)method: {'backfill', 'bfill', 'pad', 'ffill', None}, default None。定义了填充空值的方法, pad / ffill表示用前面行/列的值,填充当前行/列的空值, backfill / bfill表示用后面行/列的值,填充当前行/列的空值。
        • 1,默认纵轴填充
      • (3)axis:轴。0或'index',表示按行删除;1或'columns',表示按列删除。
        • 1,横轴填充
      • (4)inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操作,返回值为None。
      • (5)limit:int, default None。如果method被指定,对于连续的空值,这段连续区域,最多填充前 limit 个空值(如果存在多段连续区域,每段最多填充前 limit 个空值)。如果method未被指定, 在该axis下,最多填充前 limit 个空值(不论空值连续区间是否间断)
    • 3.2 填充异常值
      • 3.2.1 df.loc()通过布尔索引替换
      • 3.2.2 直接替换
        • 3.2.2.1 例1(正确)
        • 3.2.2.2 例2(错误)
      • 3.2.3 lamada表达式
      • 3.2.4 replace()
  • 四、查询数据

一、增加数据

【pandas】(六)增删改查_第1张图片

1.1 增加一行

【pandas】(六)增删改查_第2张图片

1.2 增加一列

【pandas】(六)增删改查_第3张图片

1.3 pd.concat()拼接数据

注:pd.concat()既可以增加行,又可以增加列
pd.concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)

【pandas】(六)增删改查_第4张图片

(1)objs:Series,DataFrame或Panel对象的序列或映射

注:默认是纵向拼接,axis=0
【pandas】(六)增删改查_第5张图片

(2)axis:{0,1,…},默认为0。纵向拼接。

【pandas】(六)增删改查_第6张图片
【pandas】(六)增删改查_第7张图片
注:当axis=1横向拼接时,默认为并集
【pandas】(六)增删改查_第8张图片

(3)join:{‘inner’,‘outer’},默认为“outer”。如何处理其他轴上的索引。outer为联合和inner为交集。

【pandas】(六)增删改查_第9张图片

(4)ignore_index:boolean,default False。如果为True,索引重新排序。

【pandas】(六)增删改查_第10张图片

(5)join_axes:Index对象列表。outer外联之后,设置该参数能达到左连接和右连接的功能。

【pandas】(六)增删改查_第11张图片

(6)keys:序列,默认值无。使用传递的键作为最外层构建层次索引。如果为多索引,应该使用元组。

【pandas】(六)增删改查_第12张图片
levels:序列列表,默认值无。用于构建MultiIndex的特定级别(唯一值)。否则,它们将从键推断。
names:list,default无。结果层次索引中的级别的名称。
verify_integrity:boolean,default False。检查新连接的轴是否包含重复项。这相对于实际的数据串联可能是非常昂贵的。
copy:boolean,default True。如果为False,请勿不必要地复制数据。

1.4 pd.append()拼接数据

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
将被 append 的对象添加到调用者的末尾(类似 list 的方法)。
注意:如果调用者是 DataFrame 而被 append 的对象是 Series,将会把 Series 作为一列添加到末尾。Series 和 DataFrame 均有此方法。

(1)other,可以是dataframe,可以是series

【pandas】(六)增删改查_第13张图片
【pandas】(六)增删改查_第14张图片

(2)ignore_index:boolean,default False。如果为True,索引重新排序。

【pandas】(六)增删改查_第15张图片

二、删除数据

2.1 df.drop()

DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

  • 注:
  • (1)默认删除行
  • (2)无论行列,数据中显示position位置只能按照position位置删除,显示label值则只能按照label值删除

(1)labels 就是要删除的行列的名字,用列表给定

【pandas】(六)增删改查_第16张图片

(2)axis 默认为0,指删除行,因此删除columns时要指定axis=1;

【pandas】(六)增删改查_第17张图片

(3)index 直接指定要删除的行

【pandas】(六)增删改查_第18张图片

(4)columns 直接指定要删除的列

【pandas】(六)增删改查_第19张图片

(5)inplace,默认=False该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe;inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。

【pandas】(六)增删改查_第20张图片

2.2 df.drop_duplicates()删除重复数据

DataFrame.drop_duplicates(subset=None, keep=‘first’, inplace=False)

(1)subset : column label or sequence of labels, 用来指定特定的列,默认所有列

【pandas】(六)增删改查_第21张图片

(2)keep=‘first’,默认保留一条重复记录

【pandas】(六)增删改查_第22张图片
【pandas】(六)增删改查_第23张图片

(3)inplace,默认=False该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe;inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。

【pandas】(六)增删改查_第24张图片

2.3 求dataframe差集

  • append两次
  • df.drop_duplicates(keep=False)删除全部重复项,一条不留
    【pandas】(六)增删改查_第25张图片

三、修改数据

3.1 df.fillna()填充空值

**DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, kwargs)

(1)value : 变量, 字典, Series, or DataFrame

【pandas】(六)增删改查_第26张图片

(2)method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None。定义了填充空值的方法, pad / ffill表示用前面行/列的值,填充当前行/列的空值, backfill / bfill表示用后面行/列的值,填充当前行/列的空值。

1,默认纵轴填充

【pandas】(六)增删改查_第27张图片

(3)axis:轴。0或’index’,表示按行删除;1或’columns’,表示按列删除。

1,横轴填充

【pandas】(六)增删改查_第28张图片

(4)inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操作,返回值为None。

(5)limit:int, default None。如果method被指定,对于连续的空值,这段连续区域,最多填充前 limit 个空值(如果存在多段连续区域,每段最多填充前 limit 个空值)。如果method未被指定, 在该axis下,最多填充前 limit 个空值(不论空值连续区间是否间断)

【pandas】(六)增删改查_第29张图片

3.2 填充异常值

3.2.1 df.loc()通过布尔索引替换

布尔索引参考博文:https://blog.csdn.net/u010916338/article/details/105422449
【pandas】(六)增删改查_第30张图片

3.2.2 直接替换

注意:定位条件不能写反了,否则替换不成功

3.2.2.1 例1(正确)

df[‘Age’]指定替换数据的列,然后在Age列上通过布尔索引df[‘Age’] >= 35定位到需要替换的数据。
【pandas】(六)增删改查_第31张图片

3.2.2.2 例2(错误)

df[df[‘Age’] >= 35]先拿到满足条件的矩阵,然后对该矩阵的Age列做赋值,不会对原始数据造成影响。
【pandas】(六)增删改查_第32张图片

3.2.3 lamada表达式

注:lambda表达式也是先拿到Age列再根据条件判断逐个做替换
【pandas】(六)增删改查_第33张图片

3.2.4 replace()

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.replace.html

四、查询数据

参考博文:https://blog.csdn.net/u010916338/article/details/105422449

你可能感兴趣的:(python.pandas)