DataFrame
DataFrame是一个表格性的数据结构,它含有一组有序数列,每类可以是不同的值类型(数值、字符串、布尔值等)
from pandas import Series,DataFrame
import pandas as pd
import numpy as np
data = {'英雄':['李白','程咬金','公孙离','芈月','典韦'],
'定位':['刺客','坦克','射手','法师','战士'],
'路线':['野区','上路','下路','中路','野区']}
frame = DataFrame(data)
frame
Out[54]:
英雄 定位 路线
0 李白 刺客 野区
1 程咬金 坦克 上路
2 公孙离 射手 下路
3 芈月 法师 中路
4 典韦 战士 野区
给frame加一个索引值
frame2 = DataFrame(data,columns=['英雄','路线','定位','胜率'],
index=['一','二','三','四','五'] )
frame2
Out[18]:
英雄 路线 定位 胜率
一 李白 野区 刺客 NaN
二 程咬金 上路 坦克 NaN
三 公孙离 下路 射手 NaN
四 芈月 中路 法师 NaN
五 典韦 野区 战士 NaN
In [19]: frame2.columns
Out[19]: Index(['英雄', '路线', '定位', '胜率'], dtype='object')
In [20]: frame2['英雄']
Out[20]:
一 李白
二 程咬金
三 公孙离
四 芈月
五 典韦
Name: 英雄, dtype: object
In [22]: frame2.ix['三']
__main__:1: DeprecationWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing
See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/
indexing.html#ix-indexer-is-deprecated
Out[22]:
英雄 公孙离
路线 下路
定位 射手
胜率 NaN
Name: 三, dtype: object
再添加一列胜率
In [23]: frame2['胜率'] = 50
In [24]: frame2
Out[24]:
英雄 路线 定位 胜率
一 李白 野区 刺客 50
二 程咬金 上路 坦克 50
三 公孙离 下路 射手 50
四 芈月 中路 法师 50
五 典韦 野区 战士 50
In [29]: frame2['胜率'] = np.arange(5)
In [30]: frame2
Out[30]:
英雄 路线 定位 胜率
一 李白 野区 刺客 0
二 程咬金 上路 坦克 1
三 公孙离 下路 射手 2
四 芈月 中路 法师 3
五 典韦 野区 战士 4
通过series来单独给胜率赋值
In [36]: val = Series([55,57,52],index = ['一','三','五'])
In [37]: frame2['胜率'] = val
In [38]: frame2
Out[38]:
英雄 路线 定位 胜率
一 李白 野区 刺客 55.0
二 程咬金 上路 坦克 NaN
三 公孙离 下路 射手 57.0
四 芈月 中路 法师 NaN
五 典韦 野区 战士 52.0
再添加一列布尔值
In [39]: frame2['魔法'] = frame2.英雄 == '芈月'
In [40]: frame2
Out[40]:
英雄 路线 定位 胜率 魔法
一 李白 野区 刺客 55.0 False
二 程咬金 上路 坦克 NaN False
三 公孙离 下路 射手 57.0 False
四 芈月 中路 法师 NaN True
五 典韦 野区 战士 52.0 False
转置
In [42]: frame2.T
Out[42]:
一 二 三 四 五
英雄 李白 程咬金 公孙离 芈月 典韦
路线 野区 上路 下路 中路 野区
定位 刺客 坦克 射手 法师 战士
胜率 55 NaN 57 NaN 52
魔法 False False False True False
给index和columns命名
frame2.index.name = '序号';frame2.columns.name = '目录'
frame2
Out[62]:
目录 英雄 路线 定位 胜率 魔法
序号
一 李白 野区 刺客 55.0 False
二 程咬金 上路 坦克 NaN False
三 公孙离 下路 射手 57.0 False
四 芈月 中路 法师 NaN True
五 典韦 野区 战士 52.0 False
values的实行也会以二位ndarray的形式返回DataFrame中的数据
frame2.values
Out[60]:
array([['李白', '野区', '刺客', 55.0, False],
['程咬金', '上路', '坦克', nan, False],
['公孙离', '下路', '射手', 57.0, False],
['芈月', '中路', '法师', nan, True],
['典韦', '野区', '战士', 52.0, False]], dtype=object)