一、介绍
- pandas 是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
2. pandas中提供了两种常见的数据类型:
- 一维 Series
- 二维 DataFrame
二、使用及安装方式
安装
# 方法一:
导入,pandas习惯被简写成pd
import pandas as pd
三、Series类型
Series类型类似于Numpy的一维数组对象,可以将该类型看做是一组数据与数据相关的标签(索引)联合而构成(带有标签的一维数组对象)。
- 创建方式
列表
s=pd.Series([1,2,3],index=list("abc"))
字典
s=pd.Series({"a":1,"b":2,"c":3})
numpy中的ndarray数组
s=pd.Series(np.array([1,2,3]),index=list("abc"))
标量创建
s=pd.Series(1,index=list("abc"))
2. 相关属性
- index 索引
- values 值
- shape 形状
- size 元素个数
- dtype 类型
- head/tail 首/尾元素
3. 相关操作
- 矢量化运算
运算符
函数add、sub、div、 mul,可以通过fill_value来对nan进行填充
s1.add(s2,fill_value=1)
- isnull/notnull 空值判断
- 统计函数sum、min、max、min...,series在运算nan时会忽略nan,比如求和时结果部位nan
4. 索引和切片
如果Series对象的index值为非数值类型,通过[索引]访问元素,索引既可以是标签索引,也可以是位置索引。这会在一定程度上造成混淆。我们可以通过:
- loc 仅通过标签索引访问,包左包右。
- iloc 仅通过位置索引访问,包左不包右。
这样,就可以更加具有针对性去访问元素。
也可以通过布尔值数组作为索引。
5. CURD
- 获取和修改 loc、iloc
- 追加
方法一:loc[索引]=值
方法二:
reindex(新索引,method='填充方式',limit=填充次数)
- 删除 drop('索引',inplace=TrueFalse)
四、DataFrame类型
DataFrame是一个多维数据类型。因为通常使用二维数据,因此,我们可以将DataFrame理解成类似excel的表格型数据,由多列组成,每个列的类型可以不同。
因为DataFrame是多维数据类型,因此,DataFrame既有行索引,也有列索引。
- 创建方式
- 数组
df=pd.DataFrame([[1,2,3],[4,5,6]],index=["A","B"],columes=["a","b","c"])
- 字典
pd
2. 相关属性
- index行索引
- columns 列索引
- values 值
- shape 形状
- ndim 维度
- dtypes 类型
3. 相关操作
- 列操作
获取列
df[列索引]
df.列索引
增加修改列
df[列索引]=列数据
删除列
del df[列索引]
# pop 删除指定索引的元素,返回被删除的元素,只能删除一列
df.pop(列索引)
# axis在dataframe中,不一定指定0就是垂直方向,1就是水平方向。
df.drop(列索引或数组,axis=10)
- 行操作
获取行
df.loc[行索引]
df.iloc[行编号]
df[[布尔值]]
增加行
#追加单行
df.append(row)
#追加多行,append也可以,但是不适合
pd.concat((df1,df2),ignore_index=True)
- 行列混合操作
切片
# 先获取行
df.loc[].loc[]
# 先获取列
df[].loc[]
# 混合切片
# 切片只能从高维切到低维。
# 所以,对于dataframe行列的混合切片,只能先切行,再切列
# (1)loc
df.loc[标签start:标签end:step,低维切片(按照标签)] # 包含end
# (2)iloc
df.iloc[位置start:位置end:step,低维切片(按照位置)] # 不包含end
- 混合运算
DataFrame的一行或一列都是Series类型的对象。因此,DataFrame可以近似看做是多行或多列Series构成的,Series对象支持的很多操作,对于DataFrame对象也同样适用,我们可以参考之前Series对象的操作。
转置:
a.
b. DataFrame与Series混合运算。【默认Series索引匹配DataFrame的列索引,然后进行行广播。可以通过DataFrame对象的运算方法的axis参数,指定匹配方式(匹配行索引还是列索引)。
df1+df2
# 【注意】填充值只能够当其中一个dataframe有效,如果两个dataframe的值都是nan
df1.add(df2,fill_value=0)
- 行列转换
df1.T
a. 索引排序
Series与DataFrame对象可以使用sort_index方法对索引进行排序。DataFrame对象在排序时,还可以通过axis参数来指定轴(行索引还是列索引)。也可以通过ascending参数指定升序还是降序。
df.sort_index(axis=0,ascending=False)
b. 值排序
Series与DataFrame对象可以使用sort_values方法对值进行排序。
# axis
# by:按照哪个索引进行排序
# 排的是行,按照哪个列索引进行排序
# 排的是列,按照哪个行索引进行排序
# inplace
# asending :默认True 升序
df.sort_values(axis= ,by= )
c. 排名方法
#参数
# method:默认并列元素 ,显示均值
# 也可以设置max,min ,first(按照数据在原始数据中出现的顺序排名)
# s.rank(method="min")
- 统计方法
mean / sum / count
max / min
cumsum / cumprod 累加/累乘
idxmax / idxmin
var / std 方差/标准差
corr / cov 相关系数/协方差
- 其他
unique
unique 只能去除重复元素,不能排序(ndarray数组是可以排序的)
value_counts
value_counts返回series中每个值出现的次数,默认按照降序排列
isin
isin 可以使用与serise,也可以适用于dataframe,判断参数是否存在于pandas对象中;
也可以判断原元素的交集 True的是交集的部分。