Как создать Pandas DataFrame из серии (с примерами)
Часто вы можете захотеть создать pandas DataFrame из одной или нескольких серий pandas.
В следующих примерах показано, как создать pandas DataFrame, используя существующие ряды в качестве строк или столбцов DataFrame.
Пример 1: создание Pandas DataFrame с использованием серий в качестве столбцов
Предположим, у нас есть следующие три серии панд:
import pandas as pd #define three Series name = pd.Series(['A', 'B', 'C', 'D', 'E']) points = pd.Series([34, 20, 21, 57, 68]) assists = pd.Series([8, 12, 14, 9, 11])
Мы можем использовать следующий код для преобразования каждой серии в DataFrame, а затем объединить их все в один DataFrame:
#convert each Series to a DataFrame name_df = name. to_frame (name='name') points_df = points. to_frame (name='points') assists_df = assists. to_frame (name='assists') #concatenate three Series into one DataFrame df = pd.concat([name_df, points_df, assists_df], axis= 1 ) #view final DataFrame print(df) name points assists 0 A 34 8 1 B 20 12 2 C 21 14 3 D 57 9 4 E 68 11
Обратите внимание, что каждая из трех серий представлена в виде столбцов в окончательном кадре данных.
Пример 2: создание Pandas DataFrame с использованием серий в качестве строк
Предположим, у нас есть следующие три серии панд:
import pandas as pd #define three Series row1 = pd.Series(['A', 34, 8]) row2 = pd.Series(['B', 20, 12]) row3 = pd.Series(['C', 21, 14])
Мы можем использовать следующий код для объединения каждой серии в кадр данных pandas, используя каждую серию в качестве строки в кадре данных:
#create DataFrame using Series as rows df = pd.DataFrame([row1, row2, row3]) #create column names for DataFrame df.columns = ['col1', 'col2', 'col3'] #view resulting DataFrame print(df) col1 col2 col3 0 A 34 8 1 B 20 12 2 C 21 14
Обратите внимание, что каждая из трех серий представлена в виде строк в окончательном кадре данных.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:
Как создать Pandas DataFrame
В этом кратком руководстве мы рассмотрим два метода создания Pandas DataFrame: ввод значений вручную и создание датафрейма на основе значений, импортированных из файла (например, CSV).
Примечание редакции Pythonist: о том, что собой представляет Pandas, можно почитать в статье «Полное руководство по Pandas для начинающих».
Создание Pandas DataFrame путем ввода значений вручную
Чтобы создать Pandas DataFrame в Python, можно следовать этому общему шаблону:
import pandas as pd data = df = pd.DataFrame(data) print(df)
Обратите внимание, что использовать кавычки вокруг числовых значений не нужно (если только вы не хотите получить эти значения в виде строк).
Теперь давайте на простом примере рассмотрим, как применить этот шаблон.
Для начала предположим, что у вас есть следующие данные о товарах, и вы хотите захватить эти данные с помощью датафрейма Pandas:
| product_name | price |
|---|---|
| laptop | 1200 |
| printer | 150 |
| tablet | 300 |
| desk | 450 |
| chair | 200 |
Для создания DataFrame для нашего примера вы можете использовать следующий код:
import pandas as pd data = df = pd.DataFrame(data) print(df)
Запустите этот код в Python, и вы получите такой DataFrame:
product_name price 0 laptop 1200 1 printer 150 2 tablet 300 3 desk 450 4 chair 200
Как видите, каждая строка обозначена числом (также известным как индекс), начиная с 0. В качестве альтернативы вы можете назначить другое значение/имя для обозначения каждой строки.
Например, в приведенном ниже коде мы добавили index=[‘product_1’, ‘product_2’, ‘product_3’, ‘product_4’, ‘product_5’] :
import pandas as pd data = df = pd.DataFrame(data, index=['product_1', 'product_2', 'product_3', 'product_4', 'product_5']) print(df)
Теперь при выводе датафрейма вы увидите новый индекс:
product_name price product_1 laptop 1200 product_2 printer 150 product_3 tablet 300 product_4 desk 450 product_5 chair 200
Импорт значений из CSV-файла для создания Pandas DataFrame
Для импорта данных из CSV-файла в Python для создания DataFrame можно использовать следующий шаблон:
import pandas as pd data = pd.read_csv(r'Path where the CSV file is stored\File name.csv') df = pd.DataFrame(data) print(df)
Допустим, у вас есть следующие данные, хранящиеся в CSV-файле products :
| product_name | price |
|---|---|
| laptop | 1200 |
| printer | 150 |
| tablet | 300 |
| desk | 450 |
| chair | 200 |
В приведенном ниже коде Python вам нужно будет изменить путь, указав местонахождение CSV-файла на вашем компьютере.
Например, пусть путь к нашему CSV-файлу выгдядит так: ‘C:\Users\Ron\Desktop\products.csv’ .
Вот полный код создания датафрейма из данных в нашем файле:
import pandas as pd data = pd.read_csv(r'C:\Users\Ron\Desktop\products.csv') df = pd.DataFrame(data) print(df)
Запустив этот код, вы увидите тот же Pandas DataFrame:
product_name price 0 laptop 1200 1 printer 150 2 tablet 300 3 desk 450 4 chair 200
Такой датафрейм можно создать и путем импорта Excel-файла.
Поиск максимального значения в DataFrame
Поместив данные в Pandas DataFrame, вы можете осуществлять различные манипуляции с ними. Например, подсчитывать статистику.
Допустим, вы хотите найти максимальную цену среди цен всех продуктов в датафрейме.
Конечно, сейчас вы можете это сделать, просто бегло просмотрев цифры на экране, но на практике вы будете работать с большими наборами данных.
Чтобы найти максимальную цену, нужно добавить в наш код следующую строку (и не забыть вывести результат):
max_price = df['price'].max()
import pandas as pd data = df = pd.DataFrame(data) max_price = df['price'].max() print(max_price)
Запустив этот код, вы получите значение 1200, которое и является максимальной ценой в нашем датафрейме.
Узнать больше о создании DataFrame можно в документации Pandas.
Pandas: как создать новый фрейм данных из существующего фрейма данных
Существует три распространенных способа создания нового кадра данных pandas из существующего кадра данных:
Метод 1: создание нового фрейма данных с использованием нескольких столбцов из старого фрейма данных
new_df = old_df[['col1',' col2']]. copy ()
Способ 2: создать новый фрейм данных, используя один столбец из старого фрейма данных
new_df = old_df[['col1']]. copy ()
Способ 3: создать новый фрейм данных, используя все столбцы, кроме одного, из старого фрейма данных
new_df = old_df.drop('col1', axis= 1 )
В следующих примерах показано, как использовать каждый метод со следующими пандами DataFrame:
import pandas as pd #create DataFrame old_df = pd.DataFrame() #view DataFrame print(old_df)
Пример 1: создание нового фрейма данных с использованием нескольких столбцов из старого фрейма данных
Следующий код показывает, как создать новый DataFrame, используя несколько столбцов из старого DataFrame:
#create new DataFrame from existing DataFrame new_df = old_df[['points',' rebounds']]. copy () #view new DataFrame print(new_df) points rebounds 0 18 11 1 22 8 2 19 10 3 14 6 4 14 6 5 11 7 6 20 9 7 28 12 #check data type of new DataFrame type (new_df) pandas.core.frame.DataFrame
Обратите внимание, что этот новый DataFrame содержит только столбцы точек и восстановлений из старого DataFrame.
Примечание.Важно использовать функцию copy() при создании нового DataFrame, чтобы избежать любого SettingWithCopyWarning , если нам случится каким-либо образом изменить новый DataFrame.
Пример 2: создание нового фрейма данных с использованием одного столбца из старого фрейма данных
Следующий код показывает, как создать новый DataFrame, используя один столбец из старого DataFrame:
#create new DataFrame from existing DataFrame new_df = old_df[['points']]. copy () #view new DataFrame print(new_df) points 0 18 1 22 2 19 3 14 4 14 5 11 6 20 7 28 #check data type of new DataFrame type (new_df) pandas.core.frame.DataFrame
Обратите внимание, что этот новый DataFrame содержит только точки и столбец из старого DataFrame.
Пример 3: создание нового фрейма данных с использованием всех столбцов, кроме одного, из старого фрейма данных
В следующем коде показано, как создать новый DataFrame, используя все столбцы, кроме одного, из старого DataFrame:
#create new DataFrame from existing DataFrame new_df = old_df.drop('points', axis= 1 ) #view new DataFrame print(new_df) team assists rebounds 0 A 5 11 1 A 7 8 2 A 7 10 3 A 9 6 4 B 12 6 5 B 9 7 6 B 9 9 7 B 4 12 #check data type of new DataFrame type (new_df) pandas.core.frame.DataFrame
Обратите внимание, что этот новый DataFrame содержит все столбцы из исходного DataFrame, кроме столбца точек .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в Python:
Pandas Базовый №2. Создание DataFrame 2
В этом уроке мы научимся создавать DataFrame еще несколькими способами:
- Создать DataFrame из одномерного массива numpy
- Создать DataFrame из двумерного массива numpy
- Создать DataFrame из Series
- Создать DataFrame из Series и словаря
Решение
Сначала нужно импортировать нужные модули.
import numpy as np import pandas as pd
Создать DataFrame из массива numpy
Создаем датафрейм с помощью pandas.DataFrame. В качестве первого параметра передаем np.arange, второй параметр — имена столбцов.
# Создаем DataFrame из одномерного массива numpy pd.DataFrame(np.arange(1, 5), columns=['num'])
Создать DataFrame из двумерного массива numpy
В функцию np.array нужно передать список списков. В каждом списке первый элемент будет являться значением для первого столбца, а второй элемент будет являться значением второго столбца.
# Создаем DataFrame из двумерного массива numpy jp_albums = pd.DataFrame(np.array([[1980, 'British Steel'], [1981, 'Point of Entry'], [1982, 'Screaming for Vengeance'], [1984, 'Defenders of the Faith']]), columns=['year', 'album'])
Создать DataFrame из нескольких Series
При создании DataFrame из списка Series нельзя сразу задать имена столбцов.
# Создаем DataFrame из Series albums_1 = pd.Series([1986, 'Turbo']) albums_2 = pd.Series([1988, 'Ram it Down']) jp_albums_2 = pd.DataFrame([albums_1, albums_2]) jp_albums_2.columns = ['year', 'album']
Создавать DataFrame из словаря серий
Каждая Series — это значения одного столбца.
# Создать DataFrame из Series и словаря albums_3_name = pd.Series(['Painkiller', 'Jugulator']) albums_3_year = pd.Series([1990, 1997]) jp_albums_3 = pd.DataFrame()
Что если в одном из столбцов значения есть не для каждой строки
В данном примере для столбца nsongs значения есть не для всех строк. В таком случае в параметре index нужно указать индексы строк, которые нужно заполнить.
# Как произойдет заполнение albums_4_name = pd.Series(['Demolition', 'Angel of Retribution']) albums_4_year = pd.Series([2001, 2005]) albums_4_nsongs = pd.Series([13], index=[0]) jp_albums_4 = pd.DataFrame()
Примененные функции
- numpy.arange
- pandas.DataFrame
- numpy.array
- pandas.Series
Курс Pandas Базовый
| Номер урока | Урок | Описание |
|---|---|---|
| 1 | Pandas Базовый №1. Создание DataFrame и запись в CSV | Познакомимся с объектом DataFrame. Научимся его создавать двумя разными способами и научимся записывать его в файл. |
| 2 | Pandas Базовый №2. Создание DataFrame 2 | Изучим еще несколько способов создания объекта DataFrame. В этом уроке мы создадим DataFrame из массива numpy, Series, словаря Series. |
| 3 | Pandas Базовый №3. Отбор строк и столбцов, Размерность, Импорт CSV | Получить информацию о размере DataFrame, отбор строк и столбцов, индексация. |
| 4 | Pandas Базовый №4. Операции со столбцами DataFrame | Операции со столбцами в Pandas. Переименование столбцов, добавление новых столбцов, изменить существующий столбец, удаление столбцов. |
| 5 | Pandas Базовый №5. Операции со строками | Объединение по вертикали методами append и concat, Создание строк вручную, Удаление строк методом drop, Фильтрация строк условием или срезом. |
| 6 | Pandas Базовый №6. Индексы | Зачем нужны индексы, Как задать индекс, Как пользоваться индексами. |
| 7 | Pandas Базовый №7. Категории | Что такое категориальные переменные. |