导入时通常给予别名 ”pd“
import pandas as pd
Pandas是一个标签库。
与Numpy结合 使用,以Numpy数组的方式储存数据。类比于Python中列表与字典
一、对象的创建
1.1一维对象创建 pd.Seres()
大写的S
1)字典创建法
先创建字典,后生成sr
dict1={"a":0,"b":1,"c":2,"d":3,"e":4,"f":5}
#生成字典 {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5}
sr=pd.Series(dict1)
#a 0
#b 1
#c 2
#d 3
#e 4
#f 5
#dtype: int64 sr的内容,储存方式为数组
赋予每一个值一个索引
2)数组创建法
直接输入参数生成,需要两个参数
pd.Series( 值value--列表,数组都可以 , 键index )
index可不输入,默认从0开始的顺序数字。
key=["a","b","c","d","e","f"] #先创建键
value=[0,1,2,3,4,5] #创建值
sr=pd.Series(value,key)
#a 0
#b 1
#c 2
#d 3
#e 4
#f 5
#dtype: int64 与使用字典创建法创建出的一维对象一致
1.2退化Pandas为Numpy
单独查看Pandas的value或key都可以。
1.3二维对象的创建 pd.DataFrame()
1)字典创建法
v1=[13,19,47,55]
i=["1号","2号","3号","4号"]
sr1=pd.Series(v1,i)
sr1
#1号 13
#2号 19
#3号 47
#4号 55
#dtype: int64
v2=["男","女","女","男"]
sr2=pd.Series(v2,i)
sr2
#1号 男
#2号 女
#3号 女
#4号 男
#dtype: object
df=pd.DataFrame({"年龄":sr1,"性别":sr2})
df
# 年龄 性别
#1号 13 男
#2号 19 女
#3号 47 女
#4号 55 男
其中,字典的键为矩阵列标签,值就是一列的数据
创建一维对象,长度不同时会报错!!!!!!!!!!!
创建二维对象,长度不同时会取交集,导致一定的缺失。(缺失值为NaN)
2)数组创建法
直接输入三个参数 ,(值value,行标签index,列标签columns)
后两者可省略,省略时默认从0开始的顺序数字。
v=[[13,"女"],[24,"男"],[37,"女"],[78,"男"]]
i=["1号","2号","3号","4号"]
c=["年龄","性别"]
df=pd.DataFrame(v,i,c)
df
# 年龄 性别
#1号 13 女
#2号 24 男
#3号 37 女
#4号 78 男
二维对象的index与value都为numpy数组形式
二、对象的索引
显式索引,隐式索引。
显式(loc)为使用其对象提供的索引。
隐式(iloc)为使用数组本身自带的从0开始。
与numpy一样可以使用花式索引。但输出对象不一定是向量,可为矩阵。
2.1访问切片(仅是视图)
显示的1:3可以包含有3,左闭右闭。
隐式和列表相同,左闭右开。
一维对象可以去掉索引器,二维不可
修改元素时,不加索引器容易发生未知变化!!!!!
三、对象的变形
3.1转置 .T
行列转置。
df=df.T
df
# 1号 2号 3号 4号
#年龄 13 24 37 78
#性别 女 男 女 男
df=df.T
df
# 年龄 性别
#1号 13 女
#2号 24 男
#3号 37 女
#4号 78 男
3.2翻转(借助隐式索引)
df=df.iloc[:,::-1] #左右翻转
df=df.iloc[::-1,:] #上下翻转
3.3对象的重塑
.reshape 不再适用,但仍可做到 sr 并入 df ,或 df 割出 sr
df[列标签]=sr #并入
sr=df[列标签] #割出
3.4对象的拼接 pd.concat()
Pandas对象放弃了不可重复的特性。
检查重复性,需使用 .is_unique 检查,返回True则无重复
1)一维与二维对象的合并
使用重塑并入即可。
2)二维对象相互合并
增多一个参数axis。
axis=1,列的方向合并,不增多行(左右合并)
axis=0或不输入,默认行添加(上下合并)
四、对象的运算
4.1对象与系数的运算
1)一维对象直接运算
结果是对其内部逐项运算。
2)二维对象指定列特征
结果是该列特征逐项运算。
4.2对象与对象运算
对象做运算,必须保证都是数字对象,两个对象的维度可以不同。
1)一维对象之间
直接运算,逐项输出,如果行数或列数不同,则多余部分输出为NaN(缺失值)
2)二维对象之间
直接运算,逐项输出,可用于添加列特征,缺少时仍会输出NaN(缺失值)
可使用numpy的数学函数,会保留索引,
存在布尔类型
五、对象的缺失值
5.1发现缺失值 .isnull()
v=[21,321,None,878]
k=["no1","no2","no3","no4"]
sr=pd.Series(v,k)
sr
#no1 21.0
#no2 321.0
#no3 NaN
#no4 878.0
#dtype: float64
sr.isnull()
#no1 False
#no2 False
#no3 True
#no4 False
#dtype: bool
返回布尔型数组
缺失值返回为True
1)~df.isnull() 效果相当于 .notnull()
5.2剔除缺失值 .dropna()
若是二维对象,则需单独剔除含缺失值的行或列。
不输入参数,则默认剔除含缺失值的行
输入参数axis=1,则删除缺失值的列
1)设置参数 how=”all“
此时只有该行全为NaN才会被剔除。
“all”处可以限定数字。
5.3填充缺失值 .fillna()
括号内传入填充物。
1) method="ffill"
填充前一项的值
2) method="bfill"
填充后一项的值
六、导入Excel文件
excel文件另存为csv文件
6.1导入对象 pd.read_csv()
此函数专门用于读取csv文件
所需传入的参数第一个文件路径,后续为可选参数
七、数据分析
7.1聚合方法
输出df时,后续加上 .head() 方法,可以使其仅输出前五行
max()、min()等聚合方法都适用
7.2描述方法 .describe()
输出一系列数字,包含中位点及25%,75%
7.3数据透视 .pivot_table()
内含参数aggfunc,默认值为mean
1)pd.cut()
传入原始数据与切分数据(手动分割)
2)pd.qcut()
传入原始数据与数字,数字为需要分割为的部分数量(自动分割)