# 3.1.2:DateFrame对象 ## 创建DataFrame对象 `Pandas`的`DataFrame`对象可以通过许多方式创建,这里举几个常用的例子。 - 通过数组创建 >pd.DateFrame(array, index=list0, columns=list1) #list表示一个列表 - 通过单个Series对象创建 >pd.DateFrame(Series,columns=list) - 通过字典列表创建 >data = [{'a': i, 'b': 2 * i} for i in range(3)] pd.DataFrame(data) ## DataFrame是通用的NumPy数组 如果将`Series`类比为带灵活索引的一维数组,那么`DataFrame`就可以看作是一种既有灵活的行索引,又有灵活列名的二维数组,你也可以把`DataFrame`看成是有序排列的若干`Series`对象。这里的“排列”指的是它们拥有共同的索引`index`。 ```python # 创建Series对象 In: area_dict = {'California': 423967, 'Texas': 695662, 'New York': 141297, 'Florida': 170312, 'Illinois': 149995} In: population_dict = {'California': 38332521,'Texas': 26448193, 'New York': 19651127, 'Florida': 19552860, 'Illinois': 12882135} In: population = pd.Series(population_dict) In: area = pd.Series(area_dict) # 创建DataFrame对象 In: states = pd.DataFrame({'population': population, 'area': area}) In: states Out: area population California 423967 38332521 Florida 170312 19552860 Illinois 149995 12882135 New York 141297 19651127 Texas 695662 26448193 ``` 和`Series`对象一样,`DataFrame`也有一个`index`属性可以获取索引标签。另外,`DataFrame`还有一个`columns`属性,是存放列标签的`Index`对象。 ```python In: states.columns Out: Index(['area', 'population'], dtype='object') ``` ## DataFrame是特殊的字典 与`Series`类似,我们也可以把`DataFrame`看成一种特殊的字典。字典是一个键映射一个值,而`DataFrame`是一列映射一个`Series`的数据。例如,通过`area`的列属性可以返回包含面积数据的`Series`对象。 ```python In: states['area'] Out: California 423967 Florida 170312 Illinois 149995 New York 141297 Texas 695662 Name: area, dtype: int64 ``` **注意:在 `NumPy` 的二维数组里,`data[0]` 返回第一行;而在 `DataFrame` 中,`data['列名']`返回与列名相匹配的那一列。**