为何熊猫区分a Series
和单栏DataFrame
?
换句话说:Series
该类存在的原因是什么?
我主要使用带有datetime索引的时间序列,也许这有助于设置上下文。
DataFrame
是dict
of的Series
(尽管不是当前的实现),但仍不清楚为什么您会返回一个Series
对象而不是一个对象DataFrame
(即,从概念上讲dict
,只有一个条目)。
为何熊猫区分a Series
和单栏DataFrame
?
换句话说:Series
该类存在的原因是什么?
我主要使用带有datetime索引的时间序列,也许这有助于设置上下文。
DataFrame
是dict
of的Series
(尽管不是当前的实现),但仍不清楚为什么您会返回一个Series
对象而不是一个对象DataFrame
(即,从概念上讲dict
,只有一个条目)。
Answers:
引用熊猫文档
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
具有标注轴(行和列)的二维大小可变的,可能是异构的表格数据结构。算术运算在行和列标签上对齐。可以看作是Series对象的类似dict的容器。大熊猫的主要数据结构。
因此,系列是a的单个列的数据结构DataFrame
,不仅在概念上,而且从字面上看,即a中的数据DataFrame
实际上都作为的集合存储在内存中Series
。
类似地:我们需要列表和矩阵,因为矩阵是用列表构建的。单行矩阵虽然在功能上等同于列表,但没有它们组成的列表仍然不存在。
它们都具有极其相似的API,但是您会发现DataFrame
方法始终可以满足您拥有不止一列的可能性。并且,当然,您总是可以向添加另一个Series
(或等效对象)DataFrame
,而向添加Series
另一个Series
涉及创建DataFrame
。
__repr__
行为不同,这可能会有所帮助,所以您不能将它们混淆?
DataFrame
from 的实际内部数据结构的任何结论Can be thought of as a dict-like container for Series objects
。实际上,它当前存储为BlockManager
(这是您不应该依赖的实现细节)。
来自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
file_data
为brics
,在csv中添加一条美国线,然后更改['BR'....'US']
为brics.index
。也许是正确的pupuplation
。
系列是一维标记的数组,能够保存任何数据类型(整数,字符串,浮点数,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)
导入汽车数据
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
打印出drive_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 DataFrame。
打印出drive_right列作为DataFrame
print(cars.loc[:,["drives_right"]])
drives_right
US True
AUS False
JAP False
IN False
RU True
MOR True
EG True
将一个系列添加到另一个系列会创建一个DataFrame。