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

Как создать датасет python

  • автор:

Как создать 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

DataFrame — это специальная структура данных в очень популярной Python библиотеки pandas. Работа с библиотекой pandas часто заключается в том что нужно создать из данных DataFrame, а дальше что-то делать с этими данными, лежащими в DataFrame.

Есть несколько способов создать DataFrame.

Создать DataFrame из данных, записанных в коде программы

Самый простой способ создать DataFrame — это передать конструктору словарь. Ключи станут названиями колонок, а значения (в которых содержатся списки) станут данными в этих колонках.

import pandas as pd df = pd.DataFrame() 

Вот пример как это выглядит в Jupyter Notebook:

Но не всегда удобно задавать данные по столбцам. Можно создать DataFrame и из данных, которые разбиты по строкам. Для этого в конструктор нужно передать список в котором содержатся данные для строк. Вот пример создания DataFrame с данными как из прошлого примера, но по строкам, а не по столбцам:

df = pd.DataFrame([['Earth', 1], ['Moon', 0.606], ['Mars', 0.107]]) 

Но при такой записи система не знает как нужно называть столбцы, поэтому названия столбцов становятся числа начиная с нуля. В этих данных две колонки, поэтому они называются ноль и один:

Для того чтобы вместо чисел были осмысленные названия колонок нужно указать список названий в именованном аргументе columns:

df = pd.DataFrame([['Earth', 1], ['Moon', 0.606], ['Mars', 0.107]], columns=['name', 'mass_to_earth']) 

Но запись данных в коде программы подходит только для очень простых ситуаций, когда данных немного. Обычно данные в DataFrame загружаются из какого-то внешнего источника, например из файла из из базы данных.

Создать DataFrame из csv файла

Вот содержимое файла solar-system.csv:

name,mass_to_earth Earth,1 Moon,0.606 Mars,0.107 

Csv — это очень распространенный формат (расшифровывается как «comma separated values»,— «значения разделенные запятыми»). В файле solar-system.csv в первой строчке находится заголовок с названиями столбцов, все остальные строки — это данные. Разделитель между элементами это символ запятая. Для того чтобы загрузить данные из этого файла в DataFrame нужно сказать:

df = pd.read_csv('solar-system.csv') 

Но иногда формат csv файла выглядит несколько иначе. Бывает что в качестве разделителя используется не запятая, а какой-то другой символ, например точка с запятой или символ табуляции (в это случае файл иногда бывает с расширением .tsv — «tab separated values»). read_csv можно указать какой разделитель использовать:

df = pd.read_csv('solar-system.tsv', sep='\t') 

Бывает что в csv файле нет заголовка, в первой строке сразу идут данные. В таком случае нужно передать None в именованный параметр header:

df = pd.read_csv('solar-system.csv', header=None) 

Но в такой ситуации система не будет знать какие названия столбцов использовать и будут использованы цифры начиная с нуля. Для того чтобы установить имена колонок нужно передать параметр names:

df = pd.read_csv('solar-system.csv', header=None, names=['name', 'mass_to_earth']) 

Создать DataFrame из jsonl файла

Кроме csv еще есть достаточно популярный формат для хранения данных в текстовых файла — jsonl. JSON Lines. При использовании этого формата в каждой строчке файла содержится однострочный json. Это формат лучше чем csv, так как строго регламентирует что должно быть разделителем и как нужно экранировать.

Вот пример содержимого файла solar-system.jsonl:

Для того чтобы загрузить его в DataFrame нужно сказать:

pd.read_json('solar-system.jsonl', lines=True) 

Создать DataFrame из результата sql запроса

Вот пример кода, который загружает в DataFrame таблицу с результатом sql запроса из sqlite базы данных:

import sqlite3 import pandas as pd cnx = sqlite3.connect(r'/data/db.db') df = pd.read_sql_query("SELECT * FROM users", cnx) 

Создать DataFrame из файла в интернете

Иногда необходимо создать DataFrame с данными которые лежат где-то в интернете. Например, создать DataFrame из csv файла, который лежит на GitHub.

pandas.read_csv умеет рабоать не только с локальными файлами, но и с файлами, которые лежат в интернете. Вот как загрузить в DataFrame данные про страны из файла по ссылке:

import pandas as pd url = 'https://raw.githubusercontent.com/lukes/ISO-3166-Countries-with-Regional-Codes/master/all/all.csv' df = pd.read_csv(url) 

Дальше

Как создать 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.

Как создать DataFrame в Pandas?

Хотите создать DataFrame, но не знаете как? Мы поделимся с Вами сразу несколькими ваиантами! Однако, не бывает практики без теории, поэтому сначала — небольшой ликбез о том, что такое DataFrame и какое данные он может содержать.

Краткий ликбез о DataFrame

Говоря языком простым, DataFrame — это объект, созданный по образу и подобию таблицы, либо двумерной матрицы. При этом столбцы и строки таблицы могут быть именованы либо проиндексированы, а хранящиеся в DataFrame данные могут быть разных типов. На изображении ниже приведен пример DataFrame с именованными строками и столбцами, содержащий отметки учеников по разным предметам:

Как создать DataFrame?

Если Вы работаете с большими данными, то, вероятнее всего, Вам чаще всего приходится иметь дело с табличными данными, в которых строки пронумерованы. Давайте посмотрим, как будет выглядеть DataFrame с пронумерованными строками и именованными столбцами:

Как же создать DataFrame ?

Существует несколько вариантов создания DataFrame. Но какой бы вариант мы ни выбрали, в основе него будет лежать конструкция:

pandas.DataFrame(data, [columns, index, type, copy])

Параметры, которые мы будем использовать:

  • data — (обязательный параметр) это данные, из которых планируется создать DataFrame
  • columns — (необязательный параметр) это список с именами столбцов
  • index — (необязательный параметр) это список с именами столбцов

Если параметры columns или index не определены, то столбцы и строки будут пронумерованы автоматически целыми числовыми значениями, начиная с нуля.

Узнать больше информации о параметрах pandas.DataFrame() можно из официальной документации по ссылке: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html

Рассмотрим несколько наиболее практичных, на мой взгляд, вариантов создания DataFrame:

  1. Создание DataFrame из списка списков
  2. Создаем DataFrame из списка словарей
  3. Создаем DataFrame из numpy-массива
  4. Создание DataFrame из pandas.Series

Создание DataFrame из списка списков

Сначала создадим список из списков, с учетом того, что каждый вложенный список — это будущий ряд DataFrame. После этого создадим DataFrame по имени df , воспользовавшись конструкцией pd.DataFrame().

Для того, чтобы вместо имен строк выводились их индексы, нужно просто исключить определение параметра index:

import pandas as pd # Создать список из списков list_of_lists = [ [3, 4, 'отл.'], [5, 4, 'хор.'], [4, 5, 'отл.'], ] # Создаем DataFrame # Удалите параметр index, если вместо имен строк нужно выводить индексы: df = pd.DataFrame(list_of_lists, columns = ['Матем.', 'Лит-ра', 'Физ-ра'], index = ['Ворчун', 'Тихоня', 'Добряк'])

В результате получим DataFrame «df»:

Создаем DataFrame из списка словарей

Сначала создадим список словарей с учетом того, что каждый словарь представляет собой будущую строку DataFrame. Ключами словарей являются имена столбцов DataFrame, поэтому параметр columns в pd.DataFrame() определять не нужно. Параметр index определяется, если нужно получить DataFrame с именованными строками:

import pandas as pd # Создаем список словарей list_of_dict = [ , , ] # Удалите параметр index, если вместо имен строк нужно выводить индексы: df = pd.DataFrame(list_of_dict, index = ['Ворчун', 'Тихоня', 'Добряк'])

Полученный DataFrame df:

Как создать DataFrame из numpy-массива?

Сначала создадим numpy-массив arr так, чтобы строки массива включали в себя данные будущих столбцов DataFrame. После этого сформируем DataFrame из транспонированного массива arr.T, при необходимости зададим имена строк и столбцов в параметрах columns и index:

import pandas as pd import numpy as np arr = np.array([ [3, 5, 4], [4, 4, 5], ['отл.', 'хор.', 'отл.'] ]) # Удалите параметр index, если не нужны имена строк: df = pd.DataFrame(arr.T, columns = ['Матем.', 'Лит-ра', 'Физ-ра'], index = ['Ворчун', 'Тихоня', 'Добряк'])

Полученный DataFrame df:

Создание DataFrame из pandas.Series

Сначала создадим одномерные структуры данных — pandas-серии, содержащие значения из будущих столбцов DataFrame. После этого из pandas-серии сформируем DataFrame df, передав при необходимости имена строк и столбцов в параметрах columns и index:

import pandas as pd math = pd.Series([3, 5, 4]) litra = pd.Series([4, 4, 5]) fizra = pd.Series(['отл', 'хор', 'отл']) df = pd.DataFrame((math, litra, fizra), columns = ['Матем.', 'Лит-ра', 'Физ-ра'], index = ['Ворчун', 'Тихоня', 'Добряк' ])

В результате выполнения кода получим DataFrame df:

Используете для работы Jupiter Notebook? Тогда Вам точно будет интресно, как сменить тему в этом редакторе: «Как сменить тему в Jupyter Notebook?».

Вебторт рекомендует! ��

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

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