pandas复习

基础复习

下载软件与核验:
工欲善其事必先利其器,学习要求下载anaconda和xlrd,并且pandas的版本号不低于1.6。查看pandas的版本的方法:

import pandas as pd
pd.__version__

读取数据(主要以csv, excel为主),txt也可以但是需要正则表达式的知识。
csv读取实列:

df_csv = pd.read_csv('../data/my_csv.csv')
df_csv

csv读取实列:

df_excel = pd.read_excel('../data/my_excel.xlsx')
df_excel

读取txt简易写法:

df_txt = pd.read_table('../data/my_table.txt')
df_txt

公共参数:index_col表示把至少n列作为索引(n为传参的列个数),usecols表示读取列的集合(默认读取所有的列),parse_dates表示需要转化为时间的列,nrows表示读取的数据行数
基本数据结构
Series由四个部分组成,分别是序列的值data、索引index、存储类型dtype、序列的名字name。其中,索引也可以指定它的名字,默认为空。
DataFrame:在Series的基础上增加了列索引,dataframe可以看作是series的集合
基本函数与属性:
columns属性读取列名:

df = pd.read_csv("../data/billboard.csv")
df.columns

head, tail函数分别表示返回表或者序列的前n行和后n行,其中n默认为5:

df.head(10)
df.tail(3)

info, describe分别返回表的信息概况和表中数值列对应的主要统计量 :
在这里插入图片描述
在这里插入图片描述
特征统计函数(仅常用):sum(求和), mean(平均), median(中位数), std(样品标准偏差), max(最大值), min(最小值)
在这里插入图片描述
唯一值函数:
unique和nunique可以分别得到其唯一值组成的列表(unique前必须有列名,否则报错)和唯一值的个数
替换函数:
pandas中的替换函数可以归纳为三类:映射替换、逻辑替换、数值替换。基础分享研究映射替换的replace就好。(写法不单一,用最简单的)
在这里插入图片描述
排序函数:
排序共有两种方式,其一为值排序,其二为索引排序,对应的函数是sort_values和sort_index。
在这里插入图片描述
在这里插入图片描述
apply方法:
官方代码:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds)

实现所有值+1:

df=pd.DataFrame([[1,2]]*3,columns=["A","B"])
df=pd.DataFrame({
    "A":[1,2]*2,
    "B":[1,2]*2
})
df.apply(lambda x:x+1,axis=0)

注意:apply的自由度很高,但这是以性能为代价的。一般而言,使用pandas的内置函数处理和apply来处理同一个任务,其速度会相差较多,因此只有在确实存在自定义需求的情境下才考虑使用apply

pandas索引

索引器
表的列索引:
通过[列名]可以从DataFrame中取出相应的列,返回值为Series;如果要取出多个列,则可以通过[列名组成的列表],其返回值为一个DataFrame
在这里插入图片描述
loc索引器:
l一般形式是loc[r, c],其中第一个r代表行的选择,第二个c代表列的选择,如果省略第二个位置写作loc[r],这个r是指行的筛选.

df = pd.read_csv('../data/movie.csv')
df.dropna(inplace=True)
df.set_index("director_name",inplace=True)
df.loc[["James Cameron"],["color"]]

在这里插入图片描述
iloc索引器:
iloc的使用与loc类似,共有五类合法对象,分别是:整数、整数列表、整数切片、布尔列表以及函数,函数的返回值必须是前面的四类合法对象中的一个,其输入同样也为DataFrame本身
查询全部:

df.iloc[:,:]

查询1、2行的第0、1列数据

df.iloc[1:3,0:2]

query方法:
在pandas中,支持把字符串形式的查询表达式传入query方法来查询数据,其表达式的执行结果必须返回布尔列表
比如我们查询索引<=3、duration>=150并且director_name在[“James Cameron”,“Gore Verbinski”]中的可以这么写

df.query(
    '(index <= 3)&'
    '(duration >= 150)&'
    '(director_name in ["James Cameron","Gore Verbinski"] )'
)

分组
分组代码的一般模式:df.groupby(分组依据)[数据来源].使用操作。其中,分组依据可以加布尔表达式进行筛选。后面注释表示其他常用函数:

gb = df.groupby("director_name")
gb.ngroups #分组个数
gb.groups.keys() #分组的字典的key

聚合函数:
内置聚合函数:max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod
不满足于内置聚合函数可以使用agg:
官方写法:

DataFrame.agg(func,axis = 0* args,** kwargs )

其中,func是函数的名字(不要带口号,带口号是调用),axis可以取0和1分别代表行列,后面表示传递的参数
长宽表的变形:
长宽表是对于某一个特征而言的。例如:一个表中把姓名存储在某一个列中,那么它就是关于姓名的长表;如果把姓名作为列名,列中的元素是某一其他的相关特征数值,那么这个表是关于姓名的宽表
pivot语法:
pivot(index=‘i’, columns=‘c’, values=‘想要展示的数值列’)
新生成表的列索引是columns对应列的unique值,而新表的行索引是index对应列的unique值
连接
这里只说最常用的merge以及concat
merge:这里官方参数表可以参考一下:
在这里插入图片描述
concat:
这个内容比较多,可能要专门写博客讨论,以下是官方英文文档
官方文档
pandas1.1.0以后的连接函数:
compare:
它能够比较两个表或者序列的不同处并将其汇总展示
缺失数据处理:
缺失数据可以使用isna或isnull(两个函数没有区别)来进行查看,如果需要统计缺失比,则可以在后面加上mean。代码如下:

df.isna().mean()

如果想要同时对几个列,检索出全部为缺失或者至少有一个缺失或者没有缺失的行,可以使用isna, notna和any, all的组合。比如我们要查director_name、color都缺失的行可以这么写:

tmp = df[["director_name","color"]].isna().all()
df[tmp]

说明:如果不存在满足条件的行会报错。
缺失信息的删除:
dropna:
参数为轴方向axis(默认为0,即删除行)、删除方式how(any和all,不同版本这个的默认值不一定一样)、备选的删除子集subset
缺失信息的填充:
fillna:
三个常用参数:value, method, limit。其中,value为填充值,可以是标量,也可以是索引到元素的字典映射;method为填充方法,有用前面的元素填充ffill和用后面的元素填充bfill两种类型,limit参数表示连续缺失值的最大填充次数。
时序数据:
时间模块:
datetime,这个对象含有多个子包,可以实现多个层面的时间操作。
datetime.date可以操作:年月日(可以通过str函数转化为字符串),举个列子:

import datetime
today_ymd = datetime.date.today()
today_ymd

datetime,datetime操作:年月日时分秒,用法同上。不过由于精度原因,这里支持now函数获取当前时间。
时间戳:
单个时间戳的生成利用pd.Timestamp实现,举个列子:

ts = pd.Timestamp('2022/4/19')
ts

这样写的时分秒都是0,我们可以继续补全:

ts = pd.Timestamp('2022-4-19 20:10:20')
ts

时间模块与时间戳的珠联璧合:
上面两个知识点和字符串之间可以互相补足短板以及转化,如下实例:
在这里插入图片描述
同时,datetime类型还可以作为索引。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值