本校暑假训练营2

    技术2025-11-28  12

    目录


    使用Pandas删除重复的数据(符合条件行)使用Pandas 连接数据 根据所需合并不同来源的数据 按行连接 按列连接转换数据 转化为我们所需格式的数据 2.1删除数据 2.2添加数据 2.3数据排序数据分组 实验案例 1-3删除重复数据 1-4连接、转换多表的数据 1-5数据按指定列分组

    开始

    一、使用Pandas删除重复的数据

    为什么要删除重复数据

    如要统计给某商品付款的客户数目

    一些用户出现不同银行卡支付

    方法
    实验案例1-3删除行数据drop_duplicates方法
    # 1.引入库 import numpy as np import pandas as pd from pandas import Series, DataFrame # 2.创建案例表 df_obj = DataFrame({'列 1': [1, 1, 2, 2, 3, 3, 3], '列 2': ['a', 'a', 'b', 'b', 'c', 'c', 'c'], '列 3': ['A', 'A', 'B', 'B', 'C', 'C', 'C']}) # 3.判断重复行,得到True\False的表 # object_name.duplicated() # .duplicated()方法搜索DataFrame中的每一行,返回True或False # 表示它是否与这个DataFrame中前面的另一行重复 df_obj.duplicated() df_obj # 注:第一行返回值为false,下面的行与之前行比对 # 4.调用 .drop_duplicates( )方法删除重复列 # object_name.drop_duplicates() # 要删除所有重复的行,只需要从DataFrame对象调用drop_duplicates()方法。 df_obj.drop_duplicates() df_obj # 注:删除重复的行,得到没有重复行的数据 # 5.传入参数(某列)为基准,删除对应的行 # 就是只看传入得列值是否相等 # object_name.drop_duplicates(['column_name']) # 要想根据列中的重复项删除对应的行,只需要从DataFrame调用drop_duplicates()方法,然后传入列的标签索引,drop_duplicates方法将删除列中重复项的所在的行。 df_obj.drop_duplicates(['列 3']) df_obj # 注:以某列出现的重复值,删除对应的行

    二、使用Pandas连接数据

    就是把来源不同(多表)的数据进行连接,类似MySQL中的连接

    方法
    案例1-4连接数据concat方法
    # 1.引入库 import numpy as np import pandas as pd from pandas import Series, DataFrame # 2. 创建案例表:表1、表2 # 表1: 6行6列 arrange(36)是从零生成36个整数 df_obj = DataFrame(np.arange(36).reshape(6,6)) # 表2:5行3列 arrange(15) 是从零开始生成15个整数 df_obj_2 = DataFrame(np.arange(15).reshape(5,3)) # 3.按行连接数据(左外连接) # pd.concat([left_object, right_object], axis=1) # Pandas的.concat()函数将不同源的数据合并到一个数据表(DataFrame)。 # 如果想基于行索引值连接,只需要对要连接的对象调用pd.concat()函数,然后传入参数axis=1,告诉Python基于行索引值添加列来连接DataFrame。 # 按行进行 连接(左外连接) pd.concat([df_obj , df_obj_2],axis = 1) df_obj df_obj_2 # 得到 0 1 2 3 4 5 0 1 2 0 0 1 2 3 4 5 0.0 1.0 2.0 1 6 7 8 9 10 11 3.0 4.0 5.0 2 12 13 14 15 16 17 6.0 7.0 8.0 3 18 19 20 21 22 23 9.0 10.0 11.0 4 24 25 26 27 28 29 12.0 13.0 14.0 5 30 31 32 33 34 35 NaN NaN NaN # 4.按列连接数据 # 不传入参数的concat方法自动按列进行连接 # 不传入参数,默认按列 进行连接 pd.concat([df_obj , df_obj_2])

    二、使用Pandas转换数据

    方法

    删除行drop方法添加行join方法追加表append方法 # 5.删除数据 # object_name.drop([row indexes]) # 可以通过调用DataFrame对象的.drop()方法传入行索引值,从DataFrame中删除行。 # 从新格式化数据,删除指定行,不传axis = 1,删除传入的行 df_obj.drop([ 0 , 2 ]) df_obj # 从新格式化数据,删除指定列,传入 axis = 1 实现删除传入的列 df_obj.drop([ 0 , 2] , axis = 1) df_obj # 6.添加数据 # 6.1 生成6 个连续的数据,并给此对象取名字 series_obj = Series(np.arange(6)) series_obj.name = '附加数据' series_obj # 6.2 DataFrame.join(left_object, right_object) # 您可以使用DataFrame的.join()函数将两个数据源合并为一个。 .join()函数将两个数据源基于行索引值进行联接。 # 添加新列数据 df_data_added = DataFrame.join(df_obj, series_obj) df_data_added # 得到 0 1 2 3 4 5 附加数据 0 0 1 2 3 4 5 0 1 6 7 8 9 10 11 1 2 12 13 14 15 16 17 2 3 18 19 20 21 22 23 3 4 24 25 26 27 28 29 4 5 30 31 32 33 34 35 5 # 6.3.1 连接相同的两个表 ,append 追加相同数据,但索引不回连续 df_data_double = df_data_added.append(df_data_added) df_data_double # 6.3.2 传入参数到 append方法 实现忽略索引从而连续 df_data_double = df_data_added.append(df_data_added ,ignore_index=True) df_data_double # 7.数据排序 # object_name.sort_values(by=[index value], ascending=[False]) # 从DataFrame对象调用.sort_values()方法,并传入by参数来指定对DataFrame进行排序的列索引,可以实现对DataFrame中的行进行升序或降序排序 # 方法 sort_values 传入参数:by 要对数据表排序得列 、 排序方式ascending = [False\True] df_sorted = df_obj.sort_values(by=[5], ascending=[False]) df_sorted

    三、数据分组

    案例1-5sort方法
    # 1.引入库 import numpy as np import pandas as pd from pandas import Series, DataFrame # 2.基于列索引进行分组 # 2.1 定义变量,加载Date文件夹的数据文件.csv address = '../Data/mtcars.csv' # 2.2 读取文件 cars = pd.read_csv(address) # 2.3 指定列名 cars_columns = ['车型', 'mpg', 'cyl', 'disp', 'hp', 'drat', 'wt', 'qsec', 'vs', 'am', 'gear', 'carb'] # 2.4 调用head方法显示前行 cars.head() # 2.5 指定列分组(和mysql类似) # object_name.groupby('Series_name') # 如果想按指定的列对DataFrame进行分组,可以调用DataFrame对象的.groupby()方法,然后传入要分组的列名。 # 指定列分组(和mysql类似) cars_groups = cars.groupby(['cyl']) cars_groups.mean()
    Processed: 0.028, SQL: 9