Почему pandas делает различие между Series
и одним столбцом DataFrame
?
Другими словами: в чем причина существования класса Series
?
В основном я использую временные ряды с индексом datetime, возможно, это помогает установить контекст.
Почему pandas делает различие между Series
и одним столбцом DataFrame
?
Другими словами: в чем причина существования класса Series
?
В основном я использую временные ряды с индексом datetime, возможно, это помогает установить контекст.
Цитирование документов Панд
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
Двумерная изменяемая по размеру, потенциально неоднородная структура табличных данных с помеченными осями (строки и столбцы). Арифметические операции выравнивают метки строк и столбцов. Можно рассматривать как контейнер, похожий на диктовку, для объектов Series. Основная структура данных pandas.
Итак, серия - это структура данных для одного столбца в DataFrame
, не только концептуально, но и буквально, т.е. данные в DataFrame
фактически хранятся в памяти как коллекция Series
.
Аналогично: нам нужны и списки, и матрицы, потому что матрицы построены из списков. Однострочные матрицы, хотя их функциональные списки по-прежнему не могут существовать без списков, из которых они состоят.
Они оба имеют очень похожие API, но вы обнаружите, что методы DataFrame
всегда учитывают вероятность того, что у вас более одного столбца. И, конечно, вы всегда можете добавить еще один Series
(или эквивалентный объект) к DataFrame
, в то время как добавление Series
к другому Series
включает создание DataFrame
.
из документа pandas http://pandas.pydata.org/pandas-docs/stable/dsintro.html Серия представляет собой одномерный помеченный массив, способный содержать любой тип данных. Чтобы прочитать данные в виде серии панда:
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
Серия - это одномерный объект, который может содержать любой тип данных, например целые числа, числа с плавающей запятой и строки, например
import pandas as pd
x = pd.Series([A,B,C])
0 A
1 B
2 C
Первый столбец Series называется индексом, т.е. 0,1,2, второй столбец - ваши фактические данные, т.е. A, B, C.
DataFrames - это двумерный объект, который может содержать ряд, список, словарь
df=pd.DataFrame(rd(5,4),['A','B','C','D','E'],['W','X','Y','Z'])
Серия представляет собой одномерный меченый массив, способный хранить любой тип данных (целые числа, строки, числа с плавающей запятой, объекты Python и т.д.). Осевые метки совместно называются индексом. Основным методом создания серии является вызов:
s = pd.Series(data, index=index)
DataFrame представляет собой двухмерную помеченную структуру данных со столбцами потенциально разных типов. Вы можете думать об этом как таблицу или таблицу SQL, или dict объектов серии.
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)
Вот как выглядит файл cars.csv.
Распечатать колонку drive_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.
Распечатайте колонку 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.