Как создать дата фрейм
Перейти к содержимому

Как создать дата фрейм

  • автор:

Как создать 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. Категории Что такое категориальные переменные.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *