Pandas中的数据结构(2):DataFrame
DataFrame是一个二维的有标签的数据结构,可以拥有不同类型的列。DataFrame可以被看作一张SQL表格,或者Series的字典。
与Series相似,DataFrame可以接受不同种类的输入:
· 一维数组、dict、list或者Series的dcit
· 二维的numpy.ndarray
· 结构化的数组
· Series
· 另一个DataFrame
在输入数据的同时,也可以选择性地输入行和列的标签作为参数。
如果轴坐标没有被输入,则会根据公共规则被自动创建。
根据dict或者Series的字典创建DataFrame:
![](https://img.haomeiwen.com/i8428579/74fcb14577dc19e5.png)
![](https://img.haomeiwen.com/i8428579/c08ef285c7cb569f.png)
行和列可以通过index和column属性进行访问:
![](https://img.haomeiwen.com/i8428579/21ad2a25713d3297.png)
通过ndarrays / lists的字典创建DataFrame:
所有数组的大小必须相同;如果输入了索引,索引数量必须和数组数量相同。如果没输入索引,则会自动生成range(n)的索引。
![](https://img.haomeiwen.com/i8428579/5e03ff50de1a4a71.png)
通过结构化或者记录数组创建DataFrame:
![](https://img.haomeiwen.com/i8428579/bafc81daaaf4e923.png)
![](https://img.haomeiwen.com/i8428579/bf22f639eb59165f.png)
通过存储dict的list创建DataFrame:
![](https://img.haomeiwen.com/i8428579/0d84015ce9a51224.png)
DataFrame.from_dict:
DataFrame.from_dict可以接收dict的字典或者类似数组的数列字典来构建DataFrame。可以通过输入orient='index',来将dict中的key当做行坐标。
![](https://img.haomeiwen.com/i8428579/994201ff4aecd1d1.png)
DataFrame.from_records:
通过from_records创建的DataFrame可以使用特殊数据类型的index
![](https://img.haomeiwen.com/i8428579/00151ec9ee7d18af.png)
列的查找、增加和删除:
对于DataFrame的列的操作与对dict中的元素操作相似:
![](https://img.haomeiwen.com/i8428579/4e8fdedf0558012d.png)
![](https://img.haomeiwen.com/i8428579/afb71dbb4be7a1d8.png)
如果写入了一个标量,则会自动用此值补全整行;如果写入了一个Series,但其长度与DataFrame不同,则系统会自动调整Series的长度并将其装入DataFrame中。
![](https://img.haomeiwen.com/i8428579/84562300f9995e6b.png)
通过dataframe.insert()函数可以在指定位置插入一列。例如,如下命令可在第二列插入一列数据,行名为‘’bar‘’,数据为df['one']:
![](https://img.haomeiwen.com/i8428579/d07e0d839556a9f8.png)
使用assign()函数可以轻松地根据已有的行建立新的行,并且assign()函数只返回数据的副本,而不会影响原数据:
![](https://img.haomeiwen.com/i8428579/8b8eac9978e75381.png)
行的查找:
根据标签查找行:df.loc[label] 返回结果:Series
根据行的位置查找行:df.iloc[int] 返回结果:Series
行切片: df[5:10] 返回结果:DataFrame
根据判断条件选择行:df[bool_vec] 返回结果:DataFrame
![](https://img.haomeiwen.com/i8428579/108b5965595edd97.png)
通过索引查找特定位置的数据:
df.at[index,column]
或 df.col[index,column]
通过行列数字查找特定位置的数据:
df.icol[row,col]
转置:
利用DataFrame的T属性可以进行转置操作:
![](https://img.haomeiwen.com/i8428579/05bef8aa7254f69a.png)
矩阵乘法:
利用dot方法进行矩阵间的乘运算:df1.dot(df2)
元素展示:
通过df.info()方法,可以查看所有列的信息
pd.set_option('display.width',arg) 可以设置数据展示宽度,默认值是80
pd.set_option('display.max_colwidth',arg) 可以设置行的展示宽度,不足部分用...替代
reindex:
reindex方法允许你在特定的轴上对索引进行增删改,并将结果作为副本返回:
![](https://img.haomeiwen.com/i8428579/698e71fb5b47d65d.png)
reset_index:
reset_index方法可以将当前的index作为dataframe的一列,并重新创建一个index:
![](https://img.haomeiwen.com/i8428579/ddcd59f2791380d8.png)