DataFrame
1、通过二维数组创建
import pandas as pd
import numpy as np
df01=pd.DataFrame([['tony','marry','tom'],[18,20,25]])
print(df01)
'''
输出为 0 1 2
0 tony marry tom
1 18 20 25
'''
arr=np.array([
['小雪',16],
['刘星',12],
['夏东海',35]
])
df02=pd.DataFrame(arr,index=['one','two','three'],columns=['name','age'])
print(df02)
'''
输出为 name age
one 小雪 16
two 刘星 12
three 夏东海 35
'''
print('值:',df02.values)
'''
输出为 值: [['小雪' '16']
['刘星' '12']
['夏东海' '35']]
'''
print('index:',df02.index) #输出为 index: Index(['one', 'two', 'three'], dtype='object')
2、通过字典创建
import pandas as pd
data={
'apart':['101','102','103','104'],
'month':['8月','9月','12月','6月'],
'year':[2000,1999,2019,1998],
'age':[18,20,15,23]
}
df03=pd.DataFrame(data,index=['01','02','03','04'])
print(df03)
'''
输出为 apart month year age
01 101 8月 2000 18
02 102 9月 1999 20
03 103 12月 2019 15
04 104 6月 1998 23
'''
索引对象
不管是Series还是DataFrame对象,都有索引对象,索引对象负责管理轴标签和其它元数据(eg:轴名称等等),通过索引可以从Series、DataFrame中获取值或者对某个索引值进行重新赋值,Series或者DataFrame的自动对齐功能是通过索引实现的
数据抓取方式:
列:
直接通过列索引获取指定列的数据——df04.名称或df04[‘名称’]
# 抓取列数据
import pandas as pd
df04=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
print(df04)
'''
输出为 姓名 成绩
0 tom 22
1 marry 18
2 tony 20
'''
print(df04.姓名) #等价于df04['姓名']
'''
输出为 0 tom
1 marry
2 tony
Name: 姓名, dtype: object
'''
添加数据给列,原始数据几条就匹配添加几条,新添加的多了报数据大小不匹配——df[‘名称’]=[值]
# 添加列数据
import pandas as pd
df05=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df05['性别']=['男','女','男']
print(df05)
'''
输出为 姓名 成绩 性别
0 tom 22 男
1 marry 18 女
2 tony 20 男
'''
删除数据,利用pop函数——df06.pop(‘名称’)
# 删除列数据
import pandas as pd
df06=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
print(df06)
'''
输出为 姓名 成绩
0 tom 22
1 marry 18
2 tony 20
'''
df06.pop('成绩')
print(df06)
'''
输出为 姓名
0 tom
1 marry
2 tony
'''
修改列数据,直接通过字段名称赋值修改——df[‘名称’]=[值]
# 修改列数据
import pandas as pd
df07=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df07['成绩']=[99,88,100]
print(df07)
'''
输出为 姓名 成绩
0 tom 99
1 marry 88
2 tony 100
'''
行:
通过ix获取行数据
通过loc获取——df.loc[] df.loc[0,’’]==df.loc[0][’’]
# 获取行数据
import pandas as pd
df08=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
print('ix:',df08.ix[0]) #系统弃用
'''
输出为 ix: 姓名 tom
成绩 22
Name: 0, dtype: object
'''
print('loc:',df08.loc[1])
'''
输出为 loc: 姓名 marry
成绩 18
Name: 1, dtype: object
'''
print('iloc:',df08.loc[1])
'''
输出为 iloc: 姓名 marry
成绩 18
Name: 1, dtype: object
'''
添加行——df.ix[]=[] df.loc[]=[]
# 添加行
import pandas as pd
df08=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df08.ix[3]=['bob',10] #系统弃用
df08.loc[4]=['gun',100]
print(df08)
'''
输出为 姓名 成绩
0 tom 22
1 marry 18
2 tony 20
3 bob 10
4 gun 100
'''
修改行——df.ix[]=[] df.loc[]=[]
# 修改行
import pandas as pd
df08=pd.DataFrame([['tom',22],['marry',18],['tony',20]],columns=['姓名','成绩'])
df08.loc[2]=['Gun',100]
print(df08)
'''
输出为 姓名 成绩
0 tom 22
1 marry 18
2 Gun 100
'''
总结:不管是ix、loc 都是通过index取值