数据
from pandas import DataFrame, Series
import pandas as pd
import numpy as np
contries = {
'俄罗斯' : {'2013' : 10 , '2014' : 20 , '2015' : 30 },
'阿富汗' : {'2013' : 12 , '2014' : 25 , '2015' : 33 },
'新加坡' : {'2013' : 11 , '2014' : 22 , '2015' : 38 },
'柬埔寨' : {'2013' : 18 , '2014' : 16 , '2015' : 27 },
}
d1 = DataFrame(contries)
d1
----------
俄罗斯 新加坡 柬埔寨 阿富汗
2013 10 11 18 12
2014 20 22 16 25
2015 30 38 27 33
获取元素
获取一列或者多列数组
d1['柬埔寨']
d1[ ['俄罗斯', '新加坡', '柬埔寨'] ]
d1.iloc[:, 1: 3]
获取一行或者多行数据
d1.loc['2013']
d1.loc[ ['2013', '2014'] ]
d1.loc[ ['2013', '2014'], ['俄罗斯', '新加坡'] ]
获取行数据, loc里面可以放字符串标签和布尔值、数组
d1.loc[d1.新加坡 > 11]
d1.loc[d1.新加坡 > 11, ['俄罗斯', '新加坡']]
d1.iloc[1]
位置下标获取行数据
data_frame1.iloc[0]
切片获得区间数据,以下两种效果一样
data_frame1.iloc[1:3]
data_frame1[1:3]
数组切片索引
data_frame1.iloc[1:3, [0, 1]]
data_frame1.iloc[1:3, 1:]
数字和字符串混合
d1.ix[1:3, ['阿富汗', '俄罗斯']]
如果使用标签索引,用loc获取行
如果使用数字索引, 用iloc获取行
如果希望两者混合, 用ix获取行
loc iloc ix都是用获取某行、多行数据的
插入元素
插入一行
d1.loc['2016' ] = 666
d1.loc['2017' ] = ['111' , '222' , '333' , '444' ]
d1.loc['2018' ] = Series ([1 , 2 , 3 , 4 ], index=['新加坡' , '俄罗斯' , '柬埔寨' , '阿富汗' ])
d1 = d1.append( Series ([11 , 22 , 33 , 44 ], index=['新加坡' , '俄罗斯' , '柬埔寨' , '阿富汗' ], name='2019' ) )
在指定位置插入一行
a1 = d1.iloc[:2]
a2 = d1.iloc[2:]
s1 = Series([1, 2, 3, 4], index=['新加坡', '俄罗斯', '柬埔寨', '阿富汗'], name='2020')
a1 = a1.append(s1)
合并两个DataFrame
d1 = pd.concat([a1, a2])
插入一列数据
d1['法兰西' ] = Series(np.arange(8 ), index =[ str (val) for val in range(2013 , 2021 )])
d1.insert(2 , '马来西亚' ,Series(np.random.randint(0 , 8 , 8 ), index =[str (x) for x in range(2013 , 2021 )]))
删除元素
del pop 删除一列数组
drop 删除一行或者多行 一列或者多列数据
del pop
del d1['马来西亚' ]
d1.pop('阿富汗' )
drop
d1.drop ('法兰西' , axis=1 )
d1 = d1.drop ('2013' , axis=1 )
删除多行数据
d1.drop (['2013' , '2019' ], axis=0 )