Pandas最好用的函数
Pandas是Python
语言中非常好用的一种数据结构包,包含了许多有用的数据操作方法。而且很多算法相关的库函数的输入数据结构都要求是pandas
数据,或者有该数据的接口。
仔细看pandas的API说明文档,就会发现有好多有用的函数,比如非常常用的文件的读写函数就包括如下函数:
Format Type
Data Description
Reader
Writer
text
CSV
read_csv
to_csv
text
JSON
read_json
to_json
text
HTML
read_html
to_html
text
Local clipboard
read_clipboard
to_clipboard
binary
MS Excel
read_excel
to_excel
binary
HDF5 Format
read_hdf
to_hdf
binary
Feather Format
read_feather
to_feather
binary
Parquet Format
read_parquet
to_parquet
binary
Msgpack
read_msgpack
to_msgpack
binary
Stata
read_stata
to_stata
binary
SAS
read_sas
binary
Python Pickle Format
read_pickle
to_pickle
SQL
SQL
read_sql
to_sql
SQL
Google Big Query
read_gbq
to_gbq
读取数据后,对于数据处理来说,有好多有用的相关操作的函数,但是我认为其中最好用的函数是下面这个函数:
apply函数
apply函数是`pandas`里面所有函数中自由度最高的函数。该函数如下:
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
该函数最有用的是第一个参数,这个参数是函数,相当于C/C++
的函数指针。
这个函数需要自己实现,函数的传入参数根据axis
来定,比如axis = 1
,就会把一行数据作为Series
的数据结构传入给自己实现的函数中,我们在函数中实现对Series
不同属性之间的计算,返回一个结果,则apply
函数会自动遍历每一行DataFrame
的数据,最后将所有结果组合成一个Series
数据结构并返回。
比如读取一个表格:
假如我们想要得到表格中的PublishedTime
和ReceivedTime
属性之间的时间差数据,就可以使用下面的函数来实现:
import pandas as pd import datetime #用来计算日期差的包 def dataInterval(data1,data2): d1 = datetime.datetime.strptime(data1, '%Y-%m-%d') d2 = datetime.datetime.strptime(data2, '%Y-%m-%d') delta = d1 - d2 return delta.days def getInterval(arrLike): #用来计算日期间隔天数的调用的函数 PublishedTime = arrLike['PublishedTime'] ReceivedTime = arrLike['ReceivedTime'] # print(PublishedTime.strip(),ReceivedTime.strip()) days = dataInterval(PublishedTime.strip(),ReceivedTime.strip()) #注意去掉两端空白 return days if __name__ == '__main__': fileName = "NS_new.xls"; df = pd.read_excel(fileName) df['TimeInterval'] = df.apply(getInterval , axis = 1)
有时候,我们想给自己实现的函数传递参数,就可以用的apply
函数的*args
和**kwds
参数,比如同样的时间差函数,我希望自己传递时间差的标签,这样没次标签更改就不用修改自己实现的函数了,实现代码如下:
import pandas as pd import datetime #用来计算日期差的包 def dataInterval(data1,data2): d1 = datetime.datetime.strptime(data1, '%Y-%m-%d') d2 = datetime.datetime.strptime(data2, '%Y-%m-%d') delta = d1 - d2 return delta.days def getInterval_new(arrLike,before,after): #用来计算日期间隔天数的调用的函数 before = arrLike[before] after = arrLike[after] # print(PublishedTime.strip(),ReceivedTime.strip()) days = dataInterval(after.strip(),before.strip()) #注意去掉两端空白 return days if __name__ == '__main__': fileName = "NS_new.xls"; df = pd.read_excel(fileName) df['TimeInterval'] = df.apply(getInterval_new , axis = 1, args = ('ReceivedTime','PublishedTime')) #调用方式一 #下面的调用方式等价于上面的调用方式 df['TimeInterval'] = df.apply(getInterval_new , axis = 1, **{'before':'ReceivedTime','after':'PublishedTime'}) #调用方式二 #下面的调用方式等价于上面的调用方式 df['TimeInterval'] = df.apply(getInterval_new , axis = 1, before='ReceivedTime',after='PublishedTime') #调用方式三
修改后的getInterval_new
函数多了两个参数,这样我们在使用apply
函数的时候要自己传递参数,代码中显示的三种传递方式都行。
最后,本篇的全部代码在下面这个网页可以下载:
https://github.com/Dongzhixiao/Python_Exercise/tree/master/pandas_apply
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]