本文代码在python 3.9.7,pandas 1.3.4下编译通过
文章目录
一、Pandas DataFrame的创建
创建DataFrame即由获取的原数据类型(或数据文件)转为DataFrame,情况1是数据已在程序中以列表、字典或Numpy数组存储,情况2是数据在.xlsx文件或.csv文件中存储。
1. 基于列表、字典或Numpy数组创建DataFrame
列表示例:
import pandas as pd
import numpy as np
data = [['Marvin',10],['Leo',12],['Teresa',13]]
df_list = pd.DataFrame(data,columns=['Name','Age'])
字典示例:
df_dict=pd.DataFrame({'Value1':['A','B','C','D'],'Value2':['aaa','bbb','ccc','ddd']})
Numpy数组示例:
df_numpy = pd.DataFrame(np.ones((4, 4))*1, columns=list('DCBA'), index=list('4321'))
2. 基于.xlsx文件或.csv文件读取Dataframe
xlsx文件示例:
dataFormat=['Class','Name','Sex']
datafileStr=r'F:\abc\123.xlsx'
dframe=pd.read_excel(datafileStr,names=dataFormat,header=0)
## header=0则不读取excel文件的第一行(标题行)
csv文件示例:
dataFormat=['Class','Name','Sex']
datafileStr=r'F:\abc\123.csv'
dframe=pd.read_csv(datafileStr,names=dataFormat)
## csv文件中无数据列名称
二、Pandas Dataframe 的增、删、改、查、并等基本操作
DataFrame增删改查代码如下(示例):
#定义DataFrame
dataSet=pd.DataFrame([[1,2,3,4],[2,3,4,5]],columns=['a','b','c','d'])
print(dataSet)
#追加一行
dataAddRow=pd.DataFrame([[5,6,7,8]],columns=['a','b','c','d'])
dataSet=pd.concat([dataSet,dataAddRow])
dataSet.reset_index(drop=True,inplace=True)
print(dataSet)
#追加一列
dataAddCol=pd.DataFrame({'e':[11,12,12]})
dataSet=pd.concat([dataSet,dataAddCol],axis=1)
print(dataSet)
#删除一行
dataSet.drop([0],inplace=True)
print(dataSet)
#删除一列
dataSet.drop([dataSet.columns[0]],inplace=True,axis=1)#仅知道列号
dataSet.drop(['b'],inplace=True,axis=1)#知道列名
print(dataSet)
#插入一行(需要借助numpy)
#保持原columns与index不变
insert_row=1
dataSet=pd.DataFrame(np.insert(dataSet.values,0,values=[1,2,3],axis=0),
index=np.insert([x for x in dataSet.index[:]],insert_row,values=insert_row,axis=0),
columns=dataSet.columns)
print('row_insert')
print(dataSet)
#插入一列
dataSet.insert(1,'e',[1,4,7],allow_duplicates=True)
print(dataSet)
#替换一行=删除一行+插入一行
#替换一列=删除一列+插入一列
#替换单元格数值
dataSet.iloc[0,0]=30
dataSet.loc[1,'e']=25
print(dataSet)
#按行索引返回行
choose_row=dataSet[dataSet.index==1]
print('choose_row')
print(choose_row)
#按行列索引返回单元格数值
print(dataSet.loc[1,'e'])
#在一列中查找数值,返回行索引
find_row=dataSet[dataSet['c']>20]
print('find_row')
print(len(find_row.index))#检验是否找到相应数值
print(find_row)
print(find_row.index[0])
#行列转置
print('transpose')
print(dataSet.transpose())
#按给定列排序
dataSet.sort_values('d',axis=0,ascending=False,inplace=True)
print('sort')
print(dataSet)
#按给定列标准筛选
dataSet_screen=dataSet[dataSet['d']>2]
print('screen')
print(dataSet_screen)
DataFrame合并代码如下(示例):
df1 = pd.DataFrame(np.ones((4, 4))*1, columns=list('DCBA'), index=list('4321'))
df2 = pd.DataFrame(np.ones((4, 4))*2, columns=list('FEDC'), index=list('6543'))
dfc = pd.concat([df1,df2])
print(dfc)