pandas的数据结构——DataFrame

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)

猜你喜欢

转载自blog.csdn.net/weixin_43139613/article/details/82851345