python数据分析之pandas入门(一)

python数据分析之pandas入门(一)

数据结构

pandas的数据结构我觉得最主要的有两种,即Sereis和DataFrame

Series

Series是带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。轴标签统称为索引。调用 pd.Series 函数即可创建 Series:
调用方法如下:
s=pd.Series(data, index=index)
上述代码中,data 支持以下数据类型:
1、Python 字典
2、多维数组
3、标量值(如,5)
index为轴标签列表(我是将series理解为列向量,而index理解为其索引)

以下直接给出三种情况下初始化示例:
Python字典:
在这里插入图片描述

多维数组:
data 是多维数组时,index 长度必须与 data 长度一致。没有指定 index 参数时,创建数值型索引,即 [0, …, len(data) - 1]。

在这里插入图片描述
其中np.random.rand(5)是产生一个长度为5,值为N(0,1)-即以0为均值、以1为标准差的正态分布序列

标量值:
data 是标量值时,必须提供索引。Series 按索引长度重复该标量值。
在这里插入图片描述

DataFrame

如果说Series可能让大家觉得和数组没啥区别,那DataFrame我觉得才是真正让pandas收到众多程序员喜爱的原因了,因为它真的太香了,其最大优势我觉得在于可以直接读取mysql或者excel,让你操作数据就好比在navicat中操作表一样easy。话不多说,直接上代码示例。

直接读取mysql生成DataFrame
首先建一张mysql表,存储班级姓名和成绩字段,在navicat中看是这样的
在这里插入图片描述
在这里插入图片描述

基本操作

下面来介绍几个dataframe的基本操作
1、排序(df.sort_values)
根据某一列的值排序,函数定义为def sort_values(by, axis=0, ascending=True, inplace=False)
by表示需要排序的列名/行名,axis接受0或者1的输入,0表示按列的值排序,1表示按行的值排序,ascending接受布尔型输入,True表示升叙,False表示降序,inplace接受布尔型输入,表示是否需要替换原df,为True表示替换原df(此时该函数无返回值),为False表示不替换远df(此时返回值为新的排序过后的DataFrame对象)。
如在上述的成绩表中使用df.sort_values(by=‘score’,axis=0,ascending=True)表示对df按照score列升序排序,不替换原dataframe,运行结果为
在这里插入图片描述
可以看到新的dataframe是根据score升序排序的

2、重设索引(df.reset_index)
该函数主要作用是重设索引,如1中所生成的dataframe可以看到虽然排序是变化了,但是索引依旧没有发生改变(最上面那行的索引为4),就可以根据reset_index函数来重设索引,如df.sort_values(by=‘score’,axis=0,ascending=True).reset_index(drop=True),其中drop=True的作用为不保留原索引列(drop=False即为保留原索引列)
在这里插入图片描述
可以看到在修改了排序的同时也修改了索引值。

3、聚合
dataframe的聚合和sql语句中的聚合很类似,都是groupby+列名+操作的形式,如对示例dataframe需要求出每个班级的均分,可使用df.groupby(‘class’)[‘score’].mean()
在这里插入图片描述
上图中的index(索引)即为class的值

4、lambda函数
lambda函数,又称为匿名函数,是深受各位程序员喜爱的东西,当然pandas也实现了接受lambda函数的特性,如我们需要处理score列,使小于85分的值标为-1,大于等于85分的值变为1,我们可以用如下表达式达到这一作用df[‘score’].apply(lambda x:-1 if x<85 else 1)
在这里插入图片描述
5、上移/下移
pandas中可以实现整个表格下移/下移一格,用nan来填充空值,如df.shift(1)代表下移一格
在这里插入图片描述
6、累加/累乘/累计最大/累计最小
此方法多用于时间序列上的数值处理,效果是计算第一行到当前行所有值的相加结果/相乘结果/最大值/最小值,函数分别为cumsum,cumpord,cummax和cummin,运行示例如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于实例中name列为字符串,因此不能使用累乘函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值