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取值