为什么pandas要区分Series和单列DataFrame? 换句话说,级数类存在的理由是什么?
我主要使用带datetime索引的时间序列,这可能有助于设置上下文。
为什么pandas要区分Series和单列DataFrame? 换句话说,级数类存在的理由是什么?
我主要使用带datetime索引的时间序列,这可能有助于设置上下文。
当前回答
引用熊猫的文件
熊猫。DataFrame(data=None, index=None, columns=None, dtype=None, copy=False) 二维大小可变,具有标记轴(行和列)的潜在异构表格数据结构。算术运算在行标签和列标签上对齐。可以看作是系列对象的字典式容器。主要pandas数据结构。
因此,Series是DataFrame中单个列的数据结构,不仅是概念上的,而且是字面上的,即DataFrame中的数据实际上作为Series的集合存储在内存中。
类似地:我们既需要列表也需要矩阵,因为矩阵是用列表构建的。单行矩阵虽然在功能上等同于列表,但如果没有它们所组成的列表,则不可能存在。
它们都有极其相似的api,但是您会发现DataFrame方法总是满足您有多个列的可能性。当然,您总是可以向一个DataFrame添加另一个Series(或等效对象),而将一个Series添加到另一个Series则需要创建一个DataFrame。
其他回答
Series是一个一维对象,可以保存任何数据类型,如整数、浮点数和字符串
import pandas as pd
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'])
数据帧通常被描述为
具有可能不同类型列的2维标记数据结构。你可以把它想象成一个电子表格或SQL表
由于这个定义,我们可以将数据视为单元格,就像在Excel电子表格中一样,它具有带行号的行和带列标题的列。由于这种简单的观点,底层的数据结构可能有点令人惊讶。
DataFrame实际上由用于轴标签(行标签和列标签)的Index对象和用于列数据的Series对象组成。
Series对象通过行标签和列标签为每个列数据(保存在一维的numpy.ndarray中)提供封装。
因此单个列DataFrame将有一个用于列数据的底层Series对象。
有关底层数据结构的可视化表示的简单示例,请参阅DataFrame数据结构。
Series是一个一维标记数组,能够保存任何数据类型(整数、字符串、浮点数、Python对象等)。轴标签统称为索引。创建一个Series的基本方法是调用:
s = pd.Series(data, index=index)
DataFrame是一个2维标记数据结构,其列类型可能不同。您可以把它想象成一个电子表格或SQL表,或一个系列对象字典。
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)
来自熊猫医生http://pandas.pydata.org/pandas-docs/stable/dsintro.html Series是能够容纳任何数据类型的一维标记数组。 以熊猫系列的形式读取数据:
import pandas as pd
ds = pd.Series(data, index=index)
DataFrame是一个2维标记数据结构,其列类型可能不同。
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
导入车辆数据
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
下面是cars.csv文件的外观。
打印drives_right列为Series:
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数据框架。
打印drives_right列作为DataFrame
print(cars.loc[:,["drives_right"]])
drives_right
US True
AUS False
JAP False
IN False
RU True
MOR True
EG True
将一个系列添加到另一个系列将创建一个数据帧。