尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

【Pandas】学习笔记之二

【Pandas】学习笔记之二 【Pandas】学习笔记之二1. DataFrame的增删改查1.1 增加列1.1.1 直接赋值的方式1.1.2 assign函数添加列1.2 删除与去重1.2.1 drop函数1.2.2 del1.2.3 Dataframe数据去重1.2.4 Series去重1.3 修改数据1.3.1 assign替换列1.3.2 直接进行赋值修改1.3.3 replace函数替换数据1.4 查询数据1.4.1 rank排序函数2. 高级处理 - 缺失值处理3. 高级处理 - 数据合并3.1 pd.concat参考mysql的union3.2 pd.merge参考mysql的join4. 高级处理 - 数据分组4.1 基本分组4.1.1 基于一列分组4.1.2 基于多列分组4.1.3 查看分组数据4.2 分组聚合4.3 分组过滤5. 高级处理 - 交叉表与透视表1. DataFrame的增删改查1.1 增加列1.1.1 直接赋值的方式# 一列数据都是固定值 df3[new col 1] 33 # 新增列数据数量必须和行数相等 df3[new col 2] [1, 2, 3, 4, 5] df3[new col 3] df3.year * 21.1.2 assign函数添加列assign函数可以同时添加多列数据# 1. 新列名单个数据或一组数据一组数据的数量必须和df的行数相同 df2.assign(new066) # 2. 新列名Series对象该s对象的索引和df索引一致 df2.assign(new1pd.Series([1, 2, 3, 4, 5])) # 3. 可根据原数据生成新列 df2.assign(new2d2[语文]d2[数学])注意assign还可以通过函数给列赋值该函数必须有一个参数用于接收df对象如下例所示def foo(df): # 函数必须接收一个参数该参数就是被传入的df对象 print(df) ret df.index.values # 可以返回一个变量 # return hahah # 也可以返回一组变量 return ret df2.assign(new4foo)1.2 删除与去重1.2.1 drop函数drop函数删除行数据df.drop(index, inplaceTrue)drop函数删除列数据df.drop([列名], axis1, inplaceTrue)1.2.2 del使用del删除指定的列del df[列名]慎用★ 注意del是直接永久删除原df中的列drop是返回删除后的df或series对象原数据不会改变除非手动设置inplace1.2.3 Dataframe数据去重基本语法df.drop_duplicates()1.2.4 Series去重drop_duplicates()选定需要的series对象进行去重例如df1.country.drop_duplicates()对df1对象的country列进行去重unique()使用方式同上例如df1.country.unique()1.3 修改数据1.3.1 assign替换列assign函数可用于覆盖原有列语法为new_data pd1.assign([原有列名][要覆盖的值])1.3.2 直接进行赋值修改简单粗暴一般不使用直接修改原有数据列的数据df1[GDP] [5, 4, 3, 2, 1]1.3.3 replace函数替换数据可以使用replace替换单元格的元素值语法df[列名].replace(原值, 要修改的值)replace函数不修改原数据可以新建变量接收或是指定inplace参数1.4 查询数据查询即为数据索引可查看学习笔记一这里不做赘述1.4.1 rank排序函数语法DataFrame.rank()或Series.rank()rank函数返回DF或Series对象取决于使用函数参数介绍axis设置沿着哪个轴计算排名0或者1)默认为0按纵轴计算排名numeric_only是否仅仅计算数字型的columns默认为Falseascending设定升序排还是降序排默认True升序pct是否以排名的百分比显示排名所有排名与最大排名的百分比默认Falsemethod排名评分的计算方式固定值参数常用固定值如下average : 默认值排名评分不连续数值相同的评分一致都为平均值min : 排名评分不连续数值相同的评分一致都为最小值max : 排名评分不连续数值相同的评分一致都为最大值dense : 排名评分是连续的数值相同的评分一致需掌握示例2. 高级处理 - 缺失值处理3. 高级处理 - 数据合并3.1 pd.concat参考mysql的union基本语法pd.concat([data1, data2], axis1)其中axis0为列索引axis1为行索引axis0表示上下拼接1则是左右拼接3.2 pd.merge参考mysql的join基本语法pd.merge(left, right, howinner, onNone)用于链接两个pd对象可以指定按照两组数据的共同键值对合并或者左右各自left: DataFrameright: 另一个DataFrameon: 指定的共同键how:按照什么方式连接pd.merge示例left_result pd.merge(left, right, howleft, on[id])pd对象如下4. 高级处理 - 数据分组4.1 基本分组基本语法df.groupby([列名1, 列名2])4.1.1 基于一列分组例如gender_group data.groupby([gender])表示将数据按gender进行分组4.1.2 基于多列分组例如gc_group data.groupby([gender, city])表示将数据按gender和city进行分组使用gs2.get_group((Female, 上海))可查看Female上海组中的数据4.1.3 查看分组数据使用gender_group.first()查看每组第一条数据使用gender_group.last()查看每组最后一条数据按分组依据获取其中一组例如gender_group.get_group((Female,))表示获取分组中Female组的数据4.2 分组聚合基本语法df.groupby([列名1, 列名2]).agg({ 指定列1:聚合函数名, 指定列2:聚合函数名, })例如g1 data.groupby([gender_group, city]).agg({customer: count})表示将数据根据gender和city分组后基于customer列进行聚合聚合方法为计算count即统计每个城市各个性别的顾客总人数4.3 分组过滤基本格式df.groupby([列名1,...]).filter( lambda x: dosomething return True or False )案例: 按城市分组查询每组销售金额平均值大于200的全部数据df.groupby([city]).filter(lambda s: s[revenue].mean() 200) df.groupby([city])[revenue].filter(lambda s: s.mean() 200)5. 高级处理 - 交叉表与透视表
返回列表