pandas篇之pandaS常用函数应用介绍

简述

pandas是python最为流行的科学库之一,它为我们提供了丰富的功能,借助这个宝可梦口袋,我们可以实现复杂的分组统计,链式处理等功能。这里我会用篇幅较大的内容介绍pandas常见函数的使用语法并配合例子,供读者使用。

正文

補充的知識點

axis

axis为0纵轴开始读取,axis为1表示从横轴开始读取,在我们平常使用的时候,指定这个axis参数可以指定pandas矩阵的处理方向,由此产生不同的效果。

concat函数

concat函數是一個拼接函數,可以實現pandas的dataframe或者series的拼接效果,可选参数如下

import pandas as pd
io = pd.io.excel.ExcelFile("2023年02月CC.CF.CH廠電話號碼一覽表.xls")
data =pd.read_excel(io, sheet_name="CA")
data = data[(data.職位!="N/A")&(data.姓名!="N/A")&(data.姓名!="NaN")]
dtName = data["姓名"]
dtPhone = data["CDMA手機"]
dtName01 = dtName[:4]
dtName02 = dtName[4:7]
pices = [dtName01,dtName02]
#使用key拼接
data = pd.concat(pices,keys=["a","b"])
print(data)
#移除原來的索引,ignore_index=True,key會失效
#axis为0表示纵向拼接
data = pd.concat(pices,keys=["a","b"],ignore_index=True,axis=0)
print(data.shape)
#移除原來的索引,ignore_index=True,key会生效效
#axis表示横行拼接
data = pd.concat(pices,keys=["a","b"],ignore_index=False,axis=1)
print(data)

Append

append函数可以简单实现数据拼接的效果,相比concat效果较为单一,

data = dtName01.append(dtName02)

agg

agg函数是常用的聚合函数,常与下面的groupby函数搭配使用,使用agg函数可以非常方便地实现对聚合后的数据进行sum,max,min,mean,std等函数方法的统计

import pandas as pd
data = pd.read_csv("test.csv")
data = data.iloc[:,1:6]
dt1 = data.groupby("MSZoning").agg({'LotArea':['sum','max','min','mean','std'],'LotFrontage':['min']})
print(dt1)
data.groupby("MSZoning").agg({'LotArea':['sum','max','min']})
#重命名新的列名
dt2 = data.groupby("MSZoning").agg(房屋大小=('LotArea',max))
print(dt2)

groupby

分组函数,可以实现数据分组聚合统计(本质是将dataframe按条件切分为多个小块),将数据全部统计到一个部分,支持多个聚合条件

import pandas as pd
data = pd.read_csv("test.csv")
data = data.iloc[:,1:6]
print(data)
#分组并统计,按分析MSZoning,Street两列聚合分析
dt1 = data.groupby(["MSZoning","Street"])
print(dt1)

pipe

pipe是pandas常用的管道函数,可以非常便捷地实现链式编程,允许传递一个函数和零或多个参数,经过函数处理后的任意类型和形式的数据。

import pandas as pd
data = pd.read_csv("test.csv")
data = data.iloc[:,1:6]
print(data)
#所有元素加n
def incr(df,n):
    df2=df.apply(lambda x: x+n if x.name=="LotArea" else x,axis=0)
    return df2
def decl(df,n):
    df2=df.apply(lambda x: x-n if x.name=="LotArea" else x,axis=0)
    return df2
#加10再减10
data = data.query("LotArea>100").pipe(incr,10).pipe(decl,10)
print(data.head())

assign

assign函数可以实现在原数据不变的情况下,新增一或者多列,可以指定返回结果,使用起来也是较为方便的。

import pandas as pd
data = pd.read_csv("test.csv")
data = data.iloc[:,1:6]
data = data.assign(sale_num = (data["LotArea"]*20-data["LotArea"]*10))
print(data)

总结

pandas是一个非常丰富的科学库,这里只是简单介绍一下,如果有兴趣的话,后续可以去官网学习一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值