注册码获取邮箱
work@liuyaoze.com

Pandas中DataFrame的创建与取值


DataFrame的特点

DataFrame:⼀个表格型的数据结构,包含有⼀组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有⾏索引也有列索引,可以被看做是由Series组成的字典。

DataFrame的创建

python
#创建空的df
pd.DataFrame(columns=['A', 'B', 'C'], index=[0,1,2])
python
#使用字典创建
dict = {
'id':[1,2,3,4,5,6],
'name':['A','B',
'C','d','e','f'],
'math':[90,89,99,78,97,93],
'english':[89,94,80,94,94,90]
}
df=pd.DataFrame(dict)
python
#读取csv文件前三列的数据创建
csv= r'E:\users\xuebf\Desktop\csv.csv'
pd.read_csv(csv,usecols=[0,1,2])

#将空格隔开的数据转为csv
input_file='1.dat'
output_file='1.csv'
path = r'C:\Users'

pathway1 = path.replace('\\','/')+'/'+input_file
pathway2 = path.replace('\\','/')+'/'+output_file

f = open(pathway1,'r+')
temp=[]

for line in f.readlines():
    temp.append(' '.join(line.split()).join('\r\n').replace(' ', ',').replace('\r',''))

with open(pathway2,'w') as m:
    for line in temp:
        m.write(line)

DataFrame的操作

python
#重命名列
df.rename(columns={'x.2': 'x'}, inplace=True)

#横向合并df,通过名为‘x’的列的数据对齐到左表
sum=pd.merge(df1,df2,how='left',on='x')

#纵向合并df1-3
df1=[[1,2,3,4,5,],columns=['a','b','c','d','e']
df2=[[7,2,2,4,5,],columns=['a','b','c','d','e']
df3=[[1,2,2,3,5,],columns=['a','b','c','d','e']
sum=pd.concat([df1,df2,df3],axis=0)

#df1的‘x’列中重复值出现的次数。
series=pd.value_counts(df1['x'])
#返回的一个series,索引为x的值,值为x出现的次数
#由于x一般情况下不是顺序的,因此想要调用这个series比较麻烦
#可以通过下面的方法实现按顺序取出索引,i就是series第二行的索引。
i=series.index[1]

DataFrame的取值

操作 取值内容 返回值属性
data['w'] 选择表格中的'w'列 Series,多列不能采⽤此种⽅法
data[['w']] 选择表格中的'w'列 DataFrame
data[['w','z']] 选择表格中的'w'、'z'列 DataFrame
data[0:2] 返回第1⾏到第2⾏的所有⾏,左闭右开 DataFrame
data.ix[1:2] 返回第2⾏ DataFrame
data['a':'b'] 利⽤index值进⾏切⽚,左右都闭 DataFrame
data.head() 取data的前⼏⾏数据,默认为前五 DataFrame
data.tail() 取data的后⼏⾏数据,默认为后五 DataFrame
data.iloc[-1] 选取DataFrame最后⼀⾏ Series
data.iloc[-1:] 选取DataFrame最后⼀⾏ DataFrame
data.iloc[:,-1] 选取DataFrame最后⼀列 Series
data.iloc[:,[-1]] 选取Dataframe最后⼀列 DataFrame
data.loc['a',['w','x']] 返回'a'⾏'w'、'x'列 DataFrame
data.iloc[-1,-1] 选取DataFrame最后⼀⾏最后⼀列 str | int | float
data.iat[1,1] 选取第⼆⾏第⼆列 str | int | float

liuyaoze 2022年5月31日 08:33 收藏文档