pandas系列和单列DataFrame有什么区别?

时间:2014-09-25 20:09:21

标签: python pandas

为什么pandas会区分Series和单列DataFrame
换句话说:Series类存在的原因是什么?

我主要使用日期时间索引的时间序列,这可能有助于设置上下文。

6 个答案:

答案 0 :(得分:146)

引用Pandas docs

  

pandas。 DataFrame 数据=无,索引=无,列=无,dtype =无,复制=错误

     

具有标记轴的二维大小可变,可能异构的表格数据结构   (行和列)。算术运算在行标签和列标签上对齐。   可以被认为是Series对象的类似dict的容器。主要pandas数据结构

(强调我的,句子片段不是我的)

所以系列是DataFrame 的单个列的数据结构,不仅在概念上,而且字面意思,即DataFrame中的数据实际上存储在内存中Series的集合。

类似地:我们需要列表和矩阵,因为矩阵是用列表构建的。如果没有由它们组成的列表,单行matricies(相当于功能列表)仍然不存在。

它们都具有非常相似的API,但您会发现DataFrame方法始终满足您拥有多个列的可能性。当然,您始终可以向Series添加另一个DataFrame(或等效对象),而向另一个Series添加Series则需要创建DataFrame

答案 1 :(得分:12)

来自pandas doc http://pandas.pydata.org/pandas-docs/stable/dsintro.html

Series是一维标记数组,能够保存任何数据类型。 以熊猫系列形式阅读数据:

import pandas as pd
ds = pd.Series(data, index=index)

DataFrame是一个二维标签数据结构,其中包含可能不同类型的列。

import pandas as pd
df = pd.DataFrame(data, index=index)

以上两个索引都是列表

例如:我有一个包含以下数据的csv文件:

,country,popuplation,area,capital
BR,Brazil,10210,12015,Brasile
RU,Russia,1025,457,Moscow
IN,India,10458,457787,New Delhi

将上述数据作为系列和数据框读取:

import pandas as pd
file_data = pd.read_csv("file_path", index_col=0)
d = pd.Series(file_data.country, index=['BR','RU','IN'] or index =  file_data.index)

输出:

>>> d
BR           Brazil
RU           Russia
IN            India

df = pd.DataFrame(file_data.area, index=['BR','RU','IN'] or index = file_data.index )

输出:

>>> df
      area
BR   12015
RU     457
IN  457787

答案 2 :(得分:1)

Series是一个一维对象,可以保存任何数据类型,如整数,浮点数和字符串,例如

   import pandas as pd </i>
   x = pd.Series([A,B,C]) 

0 A
1 B
2 C

系列的第一列是已知指数,即0,1,2 第二列是您的实际数据,即A,B,C

DataFrames是二维对象,可以包含系列,列表,字典

df=pd.DataFrame(rd(5,4),['A','B','C','D','E'],['W','X','Y','Z'])

答案 3 :(得分:1)

Series是一维标记的数组,能够保存任何数据类型(整数,字符串,浮点数,Python对象等)。轴标签统称为索引。创建系列的基本方法是调用:

s = pd.Series(data, index=index)

DataFrame是二维标记的数据结构,具有可能不同类型的列。您可以将其视为电子表格或SQL表,或Series对象的字典。

 d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
 two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
 df = pd.DataFrame(d)

答案 4 :(得分:0)

导入汽车数据

import pandas as pd

cars = pd.read_csv('cars.csv', index_col = 0)

Here is how the cars.csv file looks.

将“ drives_right”列打印为“系列”:

print(cars.loc[:,"drives_right"])

    US      True
    AUS    False
    JAP    False
    IN     False
    RU      True
    MOR     True
    EG      True
    Name: drives_right, dtype: bool

单括号版本提供Pandas系列,双括号版本提供Pandas DataFrame。

将drives_right列打印为DataFrame

print(cars.loc[:,["drives_right"]])

         drives_right
    US           True
    AUS         False
    JAP         False
    IN          False
    RU           True
    MOR          True
    EG           True

将系列添加到另一个系列会创建一个DataFrame。

答案 5 :(得分:0)

DataFrame 通常被描述为

<块引用>

一个二维标记数据结构,其中包含可能不同类型的列。你可以把它想象成一个电子表格或 SQL 表

由于这个定义,我们可以将数据视为单元格,就像在 Excel 电子表格中一样,它具有带有行号的行和带有列标题的列。由于这种简单的观点,底层的数据结构可能有点令人惊讶。

DataFrame 实际上由用于轴标签(行和列标签)的 Index 对象和用于列数据的 Series 对象组成。

Series 对象为每个列数据(保存在一维 numpy.ndarray 中)提供封装,带有行标签和列标签。

因此,单个列 DataFrame 将具有一个用于列数据的底层 Series 对象。

请参阅 DataFrame data structure 以获取具有底层数据结构可视化表示的简单示例。