DataFrame的特点
DataFrame:⼀个表格型的数据结构,包含有⼀组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有⾏索引也有列索引,可以被看做是由Series组成的字典。
DataFrame的创建
#创建空的df
pd.DataFrame(columns=['A', 'B', 'C'], index=[0,1,2])
#使用字典创建
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)
#读取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的操作
#重命名列
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 |