01-Pandas的方法介绍

以下所有代码都是从完整代码中取的某一行,作为使用示例。
import pandas as pd

  1. 使用merge 组合两个表

    pd.merge(person, address, on= 'personId', how = 'left')[['firstName', 'lastName', 'city', 'state']]
    

    其中person,address为表名,两个表均为dataframe结构,根据personId进行左连接。选中firstName, lastName, city, state 四列组成一个dataframe

      employee.merge(employee, left_on ='managerId', right_on = 'id', how = 'left')
    

    其中employee为表名,结构为dataframe,此代码将同一个表合并了两次。返回包含左侧employee的所有行,对于右侧的employee,只有当id与左侧的managerId匹配的时候才会被保留,如果managerId没有找到对应的右侧id,那么合并后对应的列将包含缺失值NaN。对于其他相同的列名,比如salary,合并后,左侧的为salary_x,右侧的为salary_y

  2. .groupby()指定按某一列分组

    min_id = person.groupby('email')['id'].transform('min')
    

    person(Dataframe)分成多个组,每个组都包含具有相同email值的行,['id']指定要在id列上进行操作。最后使用.transform('min’)方法在id列上找到最小值,该函数返回的是一个Series对象。

  3. dataframe使用query查询符合条件的行,组成一个dataframe

    df = df.query('salary_x > salary_y')
    
  4. dataframe使用rename重命名指定列的列名

    df[['name_x']].rename(columns = {'name_x':'Employee'})
    
  5. 指定列后使用value_counts()返回该列每个唯一值的出现次数

    duplicates = df['email'].value_counts()[df['email'].value_counts() > 1].index
    

    其中dfdataframe结构,先计数,然后将计数结果用于条件判断,会返回一个bool序列,其中True表示符合条件,False表示不符合条件,.index将返回上述结果的索引。
    注意:.index的返回值不是一个列表,是一个pandas.index对象,它是用于索引的类,在上例中,它包含了在email列中符合条件的项的地址。

  6. 可以使用.tolist()index对象转化为一个列表

    duplicates_list = duplicates.tolist()
    
  7. 使用.isin()判断值是否在索引对象中,该函数返回一个bool Series

    df = df[df['email].isin(duplicates)]
    

    df[df['email'].isin(duplicates)], 使用这个布尔Series作为索引来从df中筛选出相应的行。

    df = customers[~customers['id'].isin(orders['customerId'])]
    

    其中customerId是Customers表中id的外键。

  8. drop_duplicates()函数用于删除DataFrame中的重复行(只保留第一次出现的行),subset参数用于指定基于哪些列来判断重复,不指定就是默认基于所有列。

    df = df.drop_duplicates(subset=['email'])
    
  9. .index()函数用于获取索引,.drop()函数用于删除指定的行。

    removed_person = person[person['id'] != min_id]
    person.drop(removed_person.index, inplace=True)
    

    其中inplace=True表示操作直接在person上执行

  10. to_datetime()函数将输入的参数转换为datetime对象(pandas可以理解和操作的日期时间格式)

        df['recordDate'] = pd.to_datetime(df['recordDate'])
    
  11. sort_values()方法按给定列名的值进行排序

      df_sorted = df.sort_values('recordDate')
      df.sort_values(by='num', ascending = False, inplace=True)
    
  12. .diff()方法用于计算DataFrameSeries中连续元素之间的差异

    df_sorted['date_diff'] = df_sorted['recordDate'].diff().dt.days
    

    .dt.days属性用于从这些时间差中提取天数

  13. .iloc[]是一个基于整数位置的索引器

        select_rows = df_sorted.iloc[1:][condition]
    

    其中condition是一个布尔Series,代码的意思是,选择第二行以及以后的行,再在这些行中筛选出满足条件的行。

  14. .reset_index()用于重置索引,把索引转换成一个普通的列

        df = activity.groupby('player_id')['event_date'].min().reset_index()
    

    DataFrame执行分组操作groupby并结合聚合函数min, max, sum, mean等时,返回的通常是一个Series对象,如果聚合是针对单列的。但是,当对多列进行聚合或者希望保持分组键(groupby的列)作为结果DataFrame的一部分时,返回的是一个DataFrame
    尽管只对'event_date'这一列应用了min()聚合函数,但由于调用了reset_index(),改变了结果的类型。reset_index()的作用不仅仅是重置索引,它还会将原先的分组键(在这里是player_id)作为一个普通列加入到结果中。(把Series的索引player_id转化为一个普通的列,并给Series添加一个新的默认整数索引。)

  15. .isnull()方法用于检测DataframeSeries中的缺失值,此方法返回一个与原始数据形状相同的bool对象

     df = df.query('(referee_id != 2 | referee_id.isnull())')
    
  16. .size()计算组中的行数

    df = orders.groupby('customer_number').size().reset_index(name='count')
    

    其中索引是coustomer_number,值是每个customer_number对应的订单数量。reset_index方法将这个Series转换成一个新的Dataframe,并将原来的索引customer_number转换成一个新的列。name = 'count'参数制定了新生成的列的名称。

  17. .unique()方法用于获取SeriesDataFrame中某一列的唯一值数组,此方法返回的是数组。

    invalid_ids = red_orders.sales_id.unique() # 唯一销售员ID
    

    对一个Series对象A使用该方法:A.unique()
    对一个DataFrame对象B使用该方法:B['A'].unique()

相关推荐

  1. 01-Pandas方法介绍

    2024-03-24 23:52:01       39 阅读
  2. 02-Pandas方法介绍

    2024-03-24 23:52:01       45 阅读
  3. pandas处理DataFrame方法汇总08

    2024-03-24 23:52:01       25 阅读
  4. 【python】基于pandasEXCEL合并方法

    2024-03-24 23:52:01       30 阅读
  5. Python中 NumPy与Pandas介绍

    2024-03-24 23:52:01       21 阅读
  6. Pandas分组聚合】 groupby()、agg() 方法使用

    2024-03-24 23:52:01       67 阅读
  7. pandas数据结构Series, DataFrame索引方式总结

    2024-03-24 23:52:01       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 23:52:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 23:52:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 23:52:01       87 阅读
  4. Python语言-面向对象

    2024-03-24 23:52:01       96 阅读

热门阅读

  1. 定义了服务器的端口号和Servlet的上下文路径

    2024-03-24 23:52:01       47 阅读
  2. OpenCV支持哪些类型的文件格式读写?

    2024-03-24 23:52:01       41 阅读
  3. 周报_第四十六周

    2024-03-24 23:52:01       39 阅读
  4. Spring Cloud微服务功能及其组件详细讲解

    2024-03-24 23:52:01       34 阅读
  5. ES6—运算符的扩展

    2024-03-24 23:52:01       34 阅读
  6. python 模块与包

    2024-03-24 23:52:01       39 阅读
  7. 日期时间api

    2024-03-24 23:52:01       38 阅读
  8. 100个shell常用命令

    2024-03-24 23:52:01       44 阅读
  9. 突破编程_C++_面试(STL 编程 stack)

    2024-03-24 23:52:01       42 阅读
  10. Mybatis

    Mybatis

    2024-03-24 23:52:01      32 阅读
  11. docker部署服务无法自动注册xxl-job问题排查和解决

    2024-03-24 23:52:01       41 阅读