Ну, очевидно, они разные, я думаю, что вы имеете в виду определенные операции, которые все еще возвращают фрейм данных либо потому, что у вас есть только фрейм данных с одним столбцом, либо потому, что операция приводит к фрейму данных с одним столбцом. Однако при выборе одного столбца нет никакой двусмысленности, и это разбивается на ряд. Вы должны показать пример кода, чтобы объяснить, в чем ваша проблема.
Основная проблема заключается в том, что я не вижу необходимости в объекте Series с другими методами.
сароэль
Во-первых, есть разница в пространстве имен. У серий есть только имя верхнего уровня, у фреймов данных есть верхний уровень и имя столбца. Это может привести к значительным различиям в синтаксисе обработки / создания нового ряда по сравнению с новым столбцом.
JohnE
4
Насколько я могу судить, на этот вопрос еще нужно ответить. Несмотря на то, что о нем можно думать DataFrameкак dictо Series(хотя это не текущая реализация), все еще неясно, почему вы бы когда-либо возвращали Seriesобъект вместо DataFrame(т.е. концептуально a dictс одной записью).
Двумерная изменяемая по размеру, потенциально неоднородная структура табличных данных с помеченными осями (строки и столбцы). Арифметические операции выравнивают метки строк и столбцов. Может рассматриваться как контейнер, похожий на диктовку, для объектов Series. Основная структура данных панд.
Таким образом, Series - это структура данных для одного столбцаDataFrame , не только концептуально, но и буквально, то есть данные в A DataFrameфактически сохраняются в памяти как набор Series.
Аналогично: нам нужны и списки, и матрицы, потому что матрицы построены из списков. Однострочные матрицы, хотя их функциональные списки по-прежнему не могут существовать без списков, из которых они состоят.
Они оба имеют очень похожие API, но вы обнаружите, что DataFrameметоды всегда учитывают вероятность того, что у вас есть более одного столбца. И, конечно же, вы всегда можете добавить другой Series(или эквивалентный объект) в a DataFrame, в то время как добавление a Seriesк другому Seriesпредполагает создание a DataFrame.
Спасибо за Ваш ответ. Мой вопрос был вызван ошибкой в моем коде, когда выборка в кадре данных неожиданно вернула серию, а я не смог получить доступ к атрибуту столбцов. Я не единственный, кто запутался: stackoverflow.com/questions/16782323/…
saroele
Понимаю. Возможно, это помогло бы, если бы у них было другое __repr__поведение, поэтому вы не можете их смешать?
PythonNut
6
Вы не можете сделать вывод о фактической внутренней структуре данных объекта DataFramefrom Can be thought of as a dict-like container for Series objects. Фактически, он в настоящее время хранится как BlockManager(это деталь реализации, на которую не следует полагаться).
Timdiels
1
Я все еще в замешательстве, поэтому, когда бы я использовал один столбец данных вместо серии?
Дхирадж Суварна
4
Я могу быть педантичным, но я не вижу ответа на вопрос ОП, почему существует серия. Я вижу ответ, описывающий взаимосвязь между рядами и фреймами данных, но не ответ, объясняющий, почему мы должны хотеть иметь серию в качестве отдельного типа данных, а не в качестве особого случая фрейма данных (а именно с одним столбцом).
Чтобы прочитать вышеуказанные данные как ряд и фрейм данных:
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 )
Если кто-то приложит усилия, чтобы понизить голос, не могли бы вы также попытаться указать причину?
Умеш Каушик
2
Я не понизил голос, но ваш код не работает. Вы можете изменить file_dataна brics, добавить американскую линию в CSV и изменить ['BR'....'US']на brics.index. Возможно, правильно pupuplation.
RolfBly
@RolfBly: Спасибо, что указали на эти ошибки. С моей стороны было глупо их делать. Я изменил их. Спасибо! А что касается чтения, то только в качестве примера я взял, следовательно, случайные значения.
Умеш Каушик
4
Серия - это одномерный объект, который может содержать любой тип данных, например целые числа, числа с плавающей запятой и строки, например
import pandas as pd
x = pd.Series([A,B,C])0 A
1 B
2 C
Первый столбец Series называется индексом, т.е. 0,1,2, второй столбец - ваши фактические данные, т. Е. A, B, C.
DataFrames - это двумерный объект, который может содержать ряд, список, словарь
Ряды - это одномерный помеченный массив, способный содержать любой тип данных (целые числа, строки, числа с плавающей запятой, объекты Python и т. Д.). Метки осей в совокупности называются индексом. Основной метод для создания Серии - это вызов:
s = pd.Series(data, index=index)
DataFrame - это двумерная помеченная структура данных со столбцами потенциально разных типов. Вы можете думать об этом как о электронной таблице или таблице SQL, или как о множестве объектов Series.
DataFrame
какdict
оSeries
(хотя это не текущая реализация), все еще неясно, почему вы бы когда-либо возвращалиSeries
объект вместоDataFrame
(т.е. концептуально adict
с одной записью).Ответы:
Цитирование документов панд
Таким образом, Series - это структура данных для одного столбца
DataFrame
, не только концептуально, но и буквально, то есть данные в ADataFrame
фактически сохраняются в памяти как наборSeries
.Аналогично: нам нужны и списки, и матрицы, потому что матрицы построены из списков. Однострочные матрицы, хотя их функциональные списки по-прежнему не могут существовать без списков, из которых они состоят.
Они оба имеют очень похожие API, но вы обнаружите, что
DataFrame
методы всегда учитывают вероятность того, что у вас есть более одного столбца. И, конечно же, вы всегда можете добавить другойSeries
(или эквивалентный объект) в aDataFrame
, в то время как добавление aSeries
к другомуSeries
предполагает создание aDataFrame
.источник
__repr__
поведение, поэтому вы не можете их смешать?DataFrame
fromCan be thought of as a dict-like container for Series objects
. Фактически, он в настоящее время хранится какBlockManager
(это деталь реализации, на которую не следует полагаться).из документа pandas http://pandas.pydata.org/pandas-docs/stable/dsintro.html Серия представляет собой одномерный помеченный массив, способный содержать любой тип данных. Чтобы прочитать данные в виде серии панда:
DataFrame - это двумерная помеченная структура данных со столбцами потенциально разных типов.
В обоих вышеперечисленных индексах есть список
например: у меня есть CSV-файл со следующими данными:
Чтобы прочитать вышеуказанные данные как ряд и фрейм данных:
вывод:
вывод:
источник
file_data
наbrics
, добавить американскую линию в CSV и изменить['BR'....'US']
наbrics.index
. Возможно, правильноpupuplation
.Серия - это одномерный объект, который может содержать любой тип данных, например целые числа, числа с плавающей запятой и строки, например
Первый столбец Series называется индексом, т.е. 0,1,2, второй столбец - ваши фактические данные, т. Е. A, B, C.
DataFrames - это двумерный объект, который может содержать ряд, список, словарь
источник
Ряды - это одномерный помеченный массив, способный содержать любой тип данных (целые числа, строки, числа с плавающей запятой, объекты Python и т. Д.). Метки осей в совокупности называются индексом. Основной метод для создания Серии - это вызов:
DataFrame - это двумерная помеченная структура данных со столбцами потенциально разных типов. Вы можете думать об этом как о электронной таблице или таблице SQL, или как о множестве объектов Series.
источник
Импорт данных автомобилей
Вот как выглядит файл cars.csv.
Распечатать колонку drive_right в виде серии:
Версия с одной скобкой дает серию Pandas, версия с двумя скобками - рамку данных Pandas.
Распечатайте колонку drive_right как DataFrame
Добавление серии в другую серию создает DataFrame.
источник