Pandas是在NumPy之上构建的更新软件包,提供了数据框架的有效实现。
DataFrames本质上是多维数组,带有附加的行和列标签,通常具有异构类型和/或缺失的数据。
除了为标记数据提供方便的存储接口外,Pandas还实现了许多数据库框架和电子表格程序用户熟悉的强大数据操作。
pandas有二种类型Series、DataFrame
Pandas
- Series
- 创建Series
- 使用NumPy数组创建系列
- 使用字典创建系列
- 使用索引
- DataFrame
- 创建DataFrame
- 重命名列
- 数据帧(数据列)
- 获取列名
- 向DataFrame添加新列
- 从DataFrame中删除列
- 根据行索引标签,选择行
- 根据行索引位置,选择行
- 条件选择
- 处理数据缺失的方法
- 检查缺失值
- 去除缺失值
- 填充缺失值
- 替换值
- Groupby方法
- 简单的聚合
- 应用多个聚合函数
- Groupby重新设置索引
- 合并、连接DataFrame
- Concat串联
- merge合并
- 其他操作
- 计算列值频率
- 列排序
- 功能函数应用于DataFrame所有元素
- GUI界面玩转pandas
- 安装Bamboolib
- 验证Bamboolib安装
Series
创建Series
使用下面列表、numpy数组或字典转化为Series
label=['w','x','y','z']list=[10,20,30,40]
array=np.array([10,20,30,40])
dict={'w':10,'x':20,'y':30,'z':40}
pd.Series(data=list)
pd.Series(data=list,index=label)
pd.Series(list,label)
使用NumPy数组创建系列
pd.Series(array)
pd.Series(array,label)
使用字典创建系列
pd.Series(dict)
使用索引
teamA=pd.Series([1,2,3,4],index=[‘DK’,‘FPX’,‘HLE’,‘RNG’])
DataFrame
创建DataFrame
data=pd.DataFrame(randn(10,5),index=‘A B C D E F G H I J’.split(),columns=‘Score1 Score2 Score3 Score4 Score5’.split())
from numpy.random import randnnp.random.seed(1)
data=pd.DataFrame(randn(10,5),index='A B C D E F G H I J'.split(),columns='Score1 Score2 Score3 Score4 Score5'.split())
重命名列
data.rename(columns{‘Score1’:‘Score6’,‘Score2’:‘Score7’})
数据帧(数据列)
data[‘Score3’]
data[[‘Score2’,‘Score1’]]
获取列名
data.columns.tolist()
向DataFrame添加新列
data[‘Score6’]=data[‘Score1’]+data[‘Score2’]
从DataFrame中删除列
data.drop(‘Score6’,axis=1)
#axis=1 删除行,axis=1 删除列
根据行索引标签,选择行
data.loc[‘F’]
根据行索引位置,选择行
data.iloc[2]
条件选择
data>0.5
data[data>0.5]
处理数据缺失的方法
生成一个数据
data=pd.DataFrame({'Faker':[1,2,np.nan,4,6,7,2,np.nan],'ShowMaker':[5,np.nan,np.nan,5,7,2,4,5],
'Chovy':[1,2,3,4,5,6,7,8]})
检查缺失值
data.isna().sum()
去除缺失值
data.dropna()
填充缺失值
data.fillna(value=0)
fillna函数的方法参数可用于根据列中的上一个或下一个值来填充缺少的值。
method=ffill:用前一个非缺失值去填充该缺失值
method=bfill:用下一个非缺失值填充该缺失值
替换值
replace函数可以用来替换dataframe中的值。
data.replace(5,25)
Groupby方法
生成数据
data={"ID":['001','001','003','003','005','005'],"name":['ClearLove','Kid','Zz1tai','Cool','Happy','Uzi'],
"team":['EDG','IG','RNG','NB','NB','RNG'],
"kiss":[2005,3245,1245,8765,2332,4332]}
data=pd.DataFrame(data)
简单的聚合
data.groupby(“ID”).mean()
应用多个聚合函数
data[[‘ID’,‘team’,‘kiss’]].groupby([“ID”,“team”]).agg([‘mean’,‘count’])
Groupby重新设置索引
data[[‘ID’,‘team’,‘kiss’]].groupby([“ID”,“team”]).mean().reset_index()
合并、连接DataFrame
生成数据
data1 = pd.DataFrame({'region':['LPL','LCK'],'team':['RNG','DK'],
'name':['xiaohu','ShowMaker']},
index=[0,1])
data2 = pd.DataFrame({'region':['LPL','LCK'],
'team':['FPX','T1'],
'name':['Donib','Faker']},
index=[2,3])
data3 = pd.DataFrame({'region':['LPL','LCK'],
'team':['EDG','HLE'],
'name':['Viper','Chovy']},
index=[4,5])
data4 = pd.DataFrame({'region':['LPL','LCK'],
'team':['WE','GEN'],
'name':['ELK','BBD']},
index=[6,7])
Concat串联
串联基本上通过行或列(轴=0或1)连接DataFrames。我们还需要确保数据帧的尺寸相同
pd.concat([data1,data2,data3,data4])
pd.concat([data1,data2,data3,data4],axis=1)
merge合并
就像SQL表一样,python中的合并函数允许我们合并数据帧
pd.merge(data1,data2,how=‘outer’,on=‘region’)
其他操作
生成数据
ata={"ID":['001','001','003','003','005','005'],"name":['ClearLove','Kid','Zz1tai','Cool','Happy','Uzi'],
"team":['EDG','IG','RNG','NB','NB','RNG'],
"kiss":[1000,1000,1500,2000,2000,3000]}
data=pd.DataFrame(data)
计算列值频率
data[‘kiss’].value_counts()
列排序
data.sort_values(by=‘name’)
功能函数应用于DataFrame所有元素
data[‘kiss’].apply(lambda x:x*2)
GUI界面玩转pandas
在我们做数据处理的时候,有没有觉得每次要做很多重复的事情,写无数次代码,为什么不开发一个数据处理GUI呢。
我们的想法是“不用编码就可以学习和使用 Pandas ”,现在这个想法可能开始很简单,但我发现Bamboolib在数据探索和数据清理方面要多得多。
安装Bamboolib
pip install bamboolib验证Bamboolib安装
import bamboolib as bamimport pandas as pd
data = pd.read_csv(bam.titanic_csv)
data
具体怎么使用各位可以自行去试一下,很容易上手的