# 数据转换
dict_gdp={'GDP':[27466,24899.30,19610.9,19526.3],'Population':[2419.8,2172.9,1350.1,1138.3]}# 这个dict中的值为array-like类型
pd.DataFrame.from_dict(dict_gdp)# 最基本的用法跟在DataFrame# 的构造函数中传入一个字典是一样的>>>
GDP Population
027466.02419.8124899.32172.9219610.91350.1319526.31138.3============================================================
pd.DataFrame.from_dict(dict_gdp,orient='index')# 通过设置orient参数来控制将dict# 的key作为index的索引还是columns的索引,默认是columns>>>0123
GDP 27466.024899.319610.919526.3
Population 2419.82172.91350.11138.3============================================================# 为该函数生成的DataFrame对象设置index或者columns
this=pd.DataFrame.from_dict(dict_gdp)# 当orient为columns无法直接# 在函数中设置index索引的值
this.index=['A','B','C','D']# 需要使用index属性来设置
this
>>>
GDP Population
A 27466.02419.8
B 24899.32172.9
C 19610.91350.1
D 19526.31138.3============================================================# 当orient为index可以直接使用columns参数来设置columns索引
pd.DataFrame.from_dict(dict_gdp,orient='index',columns=['A','B','C','D'])>>>
A B C D
GDP 27466.024899.319610.919526.3
Population 2419.82172.91350.11138.3
转换字典(dict)到DataFrame,字典最外围的key被orient决定位置。
dict2_gdp={'GDP':{'SHANGHAI':27466.2,'BEIJING':24899.3,'GUANGZHOU':19610.9,'SHENZHEN':19492.6},'Population':{'SHANGHAI':419.7,'BEIJING':2172.9,'GUANGZHOU':1350.11,'SHENZHEN':1137.8}}
dict2_gdp # 此dict中的内容为dict类型>>>{'GDP':{'SHANGHAI':27466.2,'BEIJING':24899.3,'GUANGZHOU':19610.9,'SHENZHEN':19492.6},'Population':{'SHANGHAI':419.7,'BEIJING':2172.9,'GUANGZHOU':1350.11,'SHENZHEN':1137.8}}
gp=pd.DataFrame.from_dict(dict2_gdp)
gp
>>>
GDP Population
BEIJING 24899.32172.90
GUANGZHOU 19610.91350.11
SHANGHAI 27466.2419.70
SHENZHEN 19492.61137.80============================================================
pd.DataFrame.from_dict(dict2_gdp,orient='index')>>>
SHANGHAI BEIJING GUANGZHOU SHENZHEN
GDP 27466.224899.319610.9019492.6
Population 419.72172.91350.111137.8
索引对象
Index对象和MultiIndex对象
Index对象
Series对象的index属性得到的就是一个Index对象
Index对象可以看成是一维数组(ndarray)或者list
Index对象是不可变的。
创建一个Index对象
# 创建Index对象
ind=pd.Index(['physics','python','math','english'])
ind
>>>
Index(['physics','python','math','english'], dtype='object')
s=pd.Series([100,90,80,77],index=ind)
s
>>>
physics 100
python 90
math 80
english 77
dtype: int64
d
>>>
gdp pop
shanghai 274662415.27
beijing 248992151.60
guangzhou 196111270.88
d['gdp']# DataFrame要获取某列的数据 就直接在索引中放入columns名称>>>
shanghai 27466
beijing 24899
guangzhou 19611
Name: gdp, dtype: int64
获取某些行的切片
d['beijing':'guangzhou']# 利用index的标签索引来切片>>>
gdp pop
beijing 248992151.60
guangzhou 196111270.88
d.loc['beijing':'guangzhou']# 同上>>>
gdp pop
beijing 248992151.60
guangzhou 196111270.88============================================================
d[1:3]# 利用index的位置索引来切片>>>
gdp pop
beijing 248992151.60
guangzhou 196111270.88
d.iloc[1:3]# 同上>>>
gdp pop
beijing 248992151.60
guangzhou 196111270.88
行列约束包括索引和切片混合
d.loc['shanghai','pop']# 全索引确定到一个值,利用标签索引>>>2415.27
d.iloc[0,1]# 同上,用的是位置索引>>>2415.27=====================================================
d.loc['guangzhou':,'pop':]# 全切片,获取到一部分数据,利用标签索引>>>
pop
guangzhou 1270.88
d.iloc[2:,:1]# 同上,利用位置索引>>>
gdp
guangzhou 19611=====================================================
d.loc['shanghai','gdp':]# 索引混合切片,利用标签索引>>>
gdp 27466.00
pop 2415.27
Name: shanghai, dtype: float64
d.iloc[0,0:]>>>
gdp 27466.00
pop 2415.27
Name: shanghai, dtype: float64