Как создать dataframe с помощью pandas и python

Как создать DataFrame из словаря

Другой распространенный случай – хранить данные каждого столбца нужной таблицы в словаре, помеченном именем столбца.

Чтобы создать DataFrame из словаря, просто предоставьте словарь конструктору класса DataFrame следующим образом: DataFrame(dictionary). Этот вызов возвращает объект DataFrame с данными из словаря, ключи которого являются именами столбцов.

Предположим, у вас есть словарь, в котором хранятся три списка, индексированные ключами Name, Age и Department. Вы просто предоставляете этот словарь конструктору DataFrame следующим образом:

И это все! Вот так просто можно получить следующий результат:

Убедитесь, что все списки словарей имеют одинаковую длину.

Как выбрать строки из Pandas DataFrame по условию

Собираем тестовый набор данных для иллюстрации работы выборки по условию

Color Shape Price
Green Rectangle 10
Green Rectangle 15
Green Square 5
Blue Rectangle 5
Blue Square 10
Red Square 15
Red Square 15
Red Rectangle 5

Пишем скрипт:

import pandas as pd
Boxes = {'Color': ,
         'Shape': ,
         'Price': 
        }
df = pd.DataFrame(Boxes, columns= )
print (df)

Результат выполнения:

   Color      Shape  Price
0  Green  Rectangle     10
1  Green  Rectangle     15
2  Green     Square      5
3   Blue  Rectangle      5
4   Blue     Square     10
5    Red     Square     15
6    Red     Square     15
7    Red  Rectangle      5

Синтаксис выборки строк из Pandas DataFrame по условию

Вы можете использовать следующую логику для выбора строк в Pandas DataFrame по условию:

df.loc

Например, если вы хотите получить строки с зеленым цветом , вам нужно применить:

df.loc

Где:

  • Color — это название столбца
  • Green — это условие (значение колонки)

А вот полный код Python для нашего примера:

import pandas as pd
Boxes = {'Color': ,
         'Shape': ,
         'Price': 
        }
df = pd.DataFrame(Boxes, columns= )
print (df.loc)

Результат:

   Color      Shape  Price
0  Green  Rectangle     10
1  Green  Rectangle     15
2  Green     Square      5

Выберем строки, где цена равна или больше 10

Чтобы получить все строки, где цена равна или больше 10, Вам нужно применить следующее условие:

df.loc

Полный код Python:

import pandas as pd
Boxes = {'Color': ,
         'Shape': ,
         'Price': 
        }
df = pd.DataFrame(Boxes, columns= )
print (df.loc)

Результат:

   Color      Shape  Price
0  Green  Rectangle     10
1  Green  Rectangle     15
4   Blue     Square     10
5    Red     Square     15
6    Red     Square     15

Выберем строки, в которых цвет зеленый, а форма — прямоугольник

Теперь цель состоит в том, чтобы выбрать строки на основе двух условий:

  • Color зеленый; а также
  • Shape = прямоугольник

Мы будем использовать символ & для применения нескольких условий. В нашем примере код будет выглядеть так:

df.loc

Полный код примера Python для выборки Pandas DataFrame:

import pandas as pd
Boxes = {'Color': ,
         'Shape': ,
         'Price': 
        }
df = pd.DataFrame(Boxes, columns= )
print (df.loc)

Результат:

   Color      Shape  Price
0  Green  Rectangle     10
1  Green  Rectangle     15

Выберем строки, где цвет зеленый ИЛИ форма прямоугольная

Для достижения этой цели будем использовать символ | следующим образом:

df.loc

Полный код Python 3:

import pandas as pd
Boxes = {'Color': ,
         'Shape': ,
         'Price': 
        }
df = pd.DataFrame(Boxes, columns= )
print (df.loc)

Результат:

   Color      Shape  Price
0  Green  Rectangle     10
1  Green  Rectangle     15
2  Green     Square      5
3   Blue  Rectangle      5
7    Red  Rectangle      5

Выберем строки, где цена не равна 15

Мы будем использовать комбинацию символов !=, чтобы выбрать строки, цена которых не равна 15:

df.loc

Полный код Pandas DF на питоне:

import pandas as pd
Boxes = {'Color': ,
         'Shape': ,
         'Price': 
        }
df = pd.DataFrame(Boxes, columns= )
print (df.loc)

Результат работы скрипта Python:

   Color      Shape  Price
0  Green  Rectangle     10
2  Green     Square      5
3   Blue  Rectangle      5
4   Blue     Square     10
7    Red  Rectangle      5

Пример 2

Если вы не укажете параметр ignoreIndex = False, вы получите TypeError.

В следующем примере мы попытаемся добавить строку в DataFrame с параметром ignoreIndex = False.

import pandas as pd

data = {'name': ,
	'physics': ,
	'chemistry': }

#create dataframe
df_marks = pd.DataFrame(data)
print('Original DataFrame\n------------------')
print(df_marks)

new_row = {'name':'Geo', 'physics':87, 'chemistry':92}
#append row to the dataframe
df_marks = df_marks.append(new_row, ignore_index=False)

print('\n\nNew row added to DataFrame\n--------------------------')
print(df_marks)

Вывод:

Original DataFrame
------------------
   name  physics  chemistry
0  Amol       77         73
1  Lini       78         85
Traceback (most recent call last):
  File "example1.py", line 14, in <module>
    df_marks = df_marks.append(new_row, ignore_index=False)
  File "C:\Users\PythonExamples\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py", line 6658, in append
    raise TypeError('Can only append a Series if ignore_index=True'
TypeError: Can only append a Series if ignore_index=True or if the Series has a name

Как говорится в сообщении об ошибке, нам нужно либо предоставить параметр ignore_index = True, либо добавить строку, то есть Series, с именем.

Мы уже видели в примере 1, как добавить строку в DataFrame с ignore_index = True. Теперь посмотрим, как добавить строку с ignore_index = False.

import pandas as pd

data = {'name': ,
	'physics': ,
	'chemistry': }

#create dataframe
df_marks = pd.DataFrame(data)
print('Original DataFrame\n------------------')
print(df_marks)

new_row = pd.Series(data={'name':'Geo', 'physics':87, 'chemistry':92}, name='x')
#append row to the dataframe
df_marks = df_marks.append(new_row, ignore_index=False)

print('\n\nNew row added to DataFrame\n--------------------------')
print(df_marks)

Мы назвали серию данными. Поэтому ignore_index = False не возвращает TypeError, и строка добавляется к DataFrame.

Вывод:

Original DataFrame
------------------
   name  physics  chemistry
0  Amol       77         73
1  Lini       78         85


New row added to DataFrame
--------------------------
   name  physics  chemistry
0  Amol       77         73
1  Lini       78         85
x   Geo       87         92

В этом руководстве по Pandas мы использовали функцию append(), чтобы добавить строку в Pandas DataFrame.

Функции могут использоваться одна за другой

Важно понимать, что логика pandas очень линейна (как в SQL, например). Поэтому если вы применяете функцию, то можете применить другую к ней же

В таком случае входящие данные последней функции будут выводом предыдущей.

Например, объединим эти два метода перебора:

Первая строчка выбирает первые 5 строк из набора данных. Потом она выбирает колонки «country» и «user_id».

Можно ли получить тот же результат с иной цепочкой функций? Конечно:

В этом случае сначала выбираются колонки, а потом берутся первые 5 строк. Результат такой же — порядок функций (и их исполнение) отличается.

А что будет, если заменить значение «article_read» на оригинальную функцию read_csv():

Так тоже можно, но это некрасиво и неэффективно

Важно понять, что работа с pandas — это применение функций и методов один за одним, и ничего больше

Пример 1

В этом примере мы создадим DataFrame и добавим новую строку. Она инициализируется как словарь Python, а функция append() используется для добавления строки.

Когда вы добавляете словарь Python в append(), убедитесь, что вы передаете ignore_index = True.

Метод append() возвращает DataFrame с вновь добавленной строкой.

import pandas as pd

data = {'name': ,
	'physics': ,
	'chemistry': ,
	'algebra': }

	
#create dataframe
df_marks = pd.DataFrame(data)
print('Original DataFrame\n------------------')
print(df_marks)

new_row = {'name':'Geo', 'physics':87, 'chemistry':92, 'algebra':97}
#append row to the dataframe
df_marks = df_marks.append(new_row, ignore_index=True)

print('\n\nNew row added to DataFrame\n--------------------------')
print(df_marks)

Запустите указанную выше программу Python, и вы увидите исходный DataFrame, к которому добавлена новая строка.

Original DataFrame
------------------
   name  physics  chemistry  algebra
0  Somu       68         84       78
1  Kiku       74         56       88
2  Amol       77         73       82
3  Lini       78         69       87


New row added to DataFrame
--------------------------
   name  physics  chemistry  algebra
0  Somu       68         84       78
1  Kiku       74         56       88
2  Amol       77         73       82
3  Lini       78         69       87
4   Geo       87         92       97

4 ответа

Лучший ответ

Предположим, ваши данные выглядят так:

Тогда его можно заменить на

Другими словами, не формируйте новый DataFrame для каждой строки. Вместо этого соберите все данные в список диктовок, а затем в конце вызовите вне цикла.

Каждый вызов требует выделения места для нового DataFrame с одной дополнительной строкой, копирования всех данных из исходного DataFrame в новый DataFrame, а затем копирования данных в новую строку. Все это распределение и копирование делают вызов в цикле очень неэффективным. Затраты времени на копирование увеличиваются в квадрате с увеличением количества строк. Мало того, что код call-DataFrame-Once легче написать, его производительность будет намного лучше — затраты времени на копирование растут линейно с количеством строк.

66

unutbu
7 Янв 2019 в 14:59

Я создал фрейм данных в цикле for с помощью временного пустого фрейма данных. Поскольку для каждой итерации цикла for будет создан новый фрейм данных, таким образом, будет перезаписано содержимое предыдущей итерации.

Следовательно, мне нужно переместить содержимое фрейма данных в пустой фрейм данных, который уже был создан. Это так просто. Нам просто нужно использовать функцию .append, как показано ниже:

Вне цикла for вы можете скопировать содержимое временного фрейма данных во фрейм основных данных, а затем удалить временный фрейм данных, если он вам не нужен.

4

JKC
25 Сен 2017 в 04:59

Есть две причины, по которым вы можете добавлять строки в цикле: 1. добавить к существующему df и 2. создать новый df.

Чтобы создать новый df, я думаю, что это хорошо документировано, что вы должны либо создать свои данные в виде списка, а затем создать фрейм данных:

ИЛИ, создать фрейм данных с индексом, а затем добавить к нему

Если вы хотите добавить к существующему фрейму данных, вы можете использовать любой из указанных выше методов, а затем добавить df вместе (с индексом или без него):

Или вы также можете создать список словарных статей и добавить их, как в ответе выше.

Использование dict (zip (cols, vals)))

53

kztd
15 Мар 2017 в 22:41

Возможно, более компактный и эффективный способ:

Вывод будет:

6

Ayanava Sarkar
18 Мар 2019 в 12:53

Как создать DataFrame из списка словарей

Чтобы создать DataFrame из списка словарей, просто предоставьте список конструктору класса DataFrame следующим образом: DataFrame(list). Этот вызов возвращает объект DataFrame, содержащий данные списка с ключами в виде имен столбцов.

В данном случае пример выглядит следующим образом:

Результатом приведенного выше кода будет:

Основная проблема этого решения заключается в том, что вы должны убедиться, что ключи в каждом словаре корректны и согласованы друг с другом. В целевом DataFrame будет создано столько столбцов, сколько различных ключей в словарях. Если, например, ключ, связанный с именем, в одном словаре – Name, в другом – name, а в третьем – NAME, то в итоге мы получим три разных колонки (с учетом регистра) для данных об имени, что нам не нужно. Кроме того, у нас будет много значений None, потому что если в других словарях нет значений для определенного ключа, то по умолчанию у нас будет именно None.

Как создать DataFrame из файла JSON

Другой вариант – хранить данные в файле JSON, что очень популярно в настоящее время.

Для создания DataFrame из файла JSON можно использовать функцию pandas read_json, задав ей имя файла следующим образом pandas.read_jason(‘data.json’). Эта функция создает новый DataFrame с данными, содержащимися в предоставленном файле.

Создадим DataFrame с теми же данными, что и в предыдущих примерах, только в этом случае исходный файл будет в формате JSON:

Теперь вам остается только использовать функцию read_json, которая будет считывать данные из файла и создавать DataFrame:

И чтобы не повторяться, результат будет таким же, как и в предыдущих случаях.

Здесь про это:

Рассмотрим несколько примеров, чтобы понять, чем отличается .iloc от .loc.

Выберем две строки и два столбца:

import pandas as pd
import numpy as np
df = pd.read_csv('D:\#python#\example\SampleData_Pandas.csv', sep=';')
print(df.iloc,  ])

Результат:

         Дата Менеджер
2  01.01.2016  Сидоров
3  01.01.2016  Сидоров

Осуществим выборку строк и столбцов с помощью среза:

import pandas as pd
import numpy as np
df = pd.read_csv('D:\#python#\example\SampleData_Pandas.csv', sep=';')
print(df.iloc)

Результат:

         Дата      Подразделение     Контрагент
2  01.01.2016  Отдел продвижения     Абакус ООО
3  01.01.2016  Отдел продвижения     Абакус ООО
4  01.01.2016       Отдел продаж  Билли Боб ООО
5  01.01.2016       Отдел продаж  Билли Боб ООО
6  01.01.2016       Отдел продаж  Билли Боб ООО
7  01.01.2016       Отдел продаж  Билли Боб ООО
8  01.01.2016  Отдел продвижения  Билли Боб ООО

Выберем 1 значение из столбца и указанной колонки:

import pandas as pd
import numpy as np
df = pd.read_csv('D:\#python#\example\SampleData_Pandas.csv', sep=';')
print(df.loc)

Результат:

Палатки

Как создать DataFrame из объектов pickle, parquet или Feather, файлов ORC, HDF, запросов SPSS, SAS, Stata или Google BigQuery.

Существуют и другие менее распространенные или более специализированные объекты или файлы данных, из которых также может быть сгенерирован DataFrame.

Если вы прочитали часть этой статьи, вы уже поняли общий подход к созданию DataFrame. Поэтому я не буду приводить примеры всех этих форматов, потому что статья будет слишком длинной (а я думаю, что она и так слишком длинная), но я хочу дать вам список функций, используемых для чтения этих объектов и файлов, чтобы вы знали об их существовании.

Со всеми этими функциями, а также со всеми теми, о которых я уже рассказал, можно ознакомиться в официальной документации pandas.

Объект или файл Функция
Pickle read_pickle
PyTables, HDF5 read_hdf
Feather read_feather
Parquet read_parquet
ORC read_orc
SAS read_sas
SPSS read_spss
Google BigQuery read_gbq
Stata read_stata

Таблица 2: Функции для создания DataFrames из других форматов

Как создать DataFrame из файла CSV

Часто мы храним данные в CSV-файле (Comma Separated Values), который представляет собой не что иное, как текстовый файл в виде таблицы, где значения разделены запятыми (или другим символом). Кроме того, эти файлы обычно имеют первую строку, которая выступает в качестве заголовка с названиями столбцов.

Для создания DataFrame из значений файла CSV можно использовать функции pandas read_csv или read_table, указав им файл и символ разделителя. Эти функции создают новый DataFrame с данными, содержащимися в файле.

Это данные, из которых мы создадим DataFrame.

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

Рассмотрим пример:

Результат на экране будет выглядеть следующим образом:

В этом простом случае вы можете использовать функцию read_table аналогичным образом, и результат будет таким же.

Если файл для чтения приходит без имен колонок, мы должны указать их через параметр names следующим образом: pd.read_csv(‘data.csv’, delimiter=’,’, names=). Если нам не нужны имена столбцов, мы можем задать параметр header=None.

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

Метод 1: использование astype()

DataFrame.astype() приводит этот DataFrame к указанному типу данных. Ниже приводится синтаксис метода.

astype(dtype, copy=True, errors='raise', **kwargs)

Нас интересует только первый аргумент dtype – это тип данных или dict имени столбца.

Итак, давайте использовать метод astype() с аргументом dtype, чтобы изменить тип данных одного или нескольких столбцов DataFrame.

Как изменить тип данных одного столбца?

Давайте сначала начнем с изменения типа данных только для одного столбца.

В следующей программе мы изменим тип данных столбца a на float.

import pandas as pd
import numpy as np

#initialize a dataframe
df = pd.DataFrame(
	,
	,
	,
	],
	columns=)

print('Previous Datatypes\n', df.dtypes, sep='') 

#change datatype of column
df = df.astype({'a': np.float})

#print results
print('\nNew Datatypes\n', df.dtypes, sep='') 
print('\nDataFrame\n', df, sep='')

Вывод:

Previous Datatypes
a    int64
b    int64
c    int64
dtype: object

New Datatypes
a    float64
b      int64
c      int64
dtype: object

DataFrame
      a   b   c
0  21.0  72  67
1  23.0  78  62
2  32.0  74  54
3  52.0  54  76

Как изменить тип данных нескольких столбцов?

Теперь давайте изменим тип данных более чем для одного столбца. Все, что нам нужно сделать, это предоставить больше пар column_name: datatype key:value в аргументе метода astype().

В следующей программе мы изменим тип данных столбца a на float, а b на int8.

import pandas as pd
import numpy as np

#initialize a dataframe
df = pd.DataFrame(
	,
	,
	,
	],
	columns=)

print('Previous Datatypes\n', df.dtypes, sep='') 

#change datatype of column
df = df.astype({'a': np.float, 'b': np.int8})

#print results
print('\nNew Datatypes\n', df.dtypes, sep='') 
print('\nDataFrame\n', df, sep='')

Вывод:

Previous Datatypes
a    int64
b    int64
c    int64
dtype: object

New Datatypes
a    float64
b       int8
c      int64
dtype: object

DataFrame
      a   b   c
0  21.0  72  67
1  23.0  78  62
2  32.0  74  54
3  52.0  54  76

Как изменить тип данных всех столбцов?

Если вы хотите изменить тип данных всех столбцов DataFrame, вы можете просто передать этот тип данных в качестве аргумента методу astype() без словаря.

В следующей программе мы изменим тип данных всех столбцов на float.

import pandas as pd
import numpy as np

#initialize a dataframe
df = pd.DataFrame(
	,
	,
	,
	],
	columns=)

print('Previous Datatypes\n', df.dtypes, sep='') 

#change datatype of column
df = df.astype(np.float)

#print results
print('\nNew Datatypes\n', df.dtypes, sep='') 
print('\nDataFrame\n', df, sep='')

Вывод:

Previous Datatypes
a    int64
b    int64
c    int64
dtype: object

New Datatypes
a    float64
b    float64
c    float64
dtype: object

DataFrame
      a     b     c
0  21.0  72.0  67.0
1  23.0  78.0  62.0
2  32.0  74.0  54.0
3  52.0  54.0  76.0

Как создать DataFrame из данных буфера обмена

Если у вас есть данные в формате таблицы, подобном предыдущему случаю, разделенные запятыми (или другим разделителем) в системном буфере обмена, pandas позволяет читать их прямо оттуда без необходимости создавать для этого файл. Это интересно, поскольку позволяет нам динамически и очень быстро создавать DataFrame из данных, полученных из различных источников, просто копируя данные в буфер обмена.

Для создания DataFrame из значений, разделенных запятыми, скопированных в системный буфер обмена, можно использовать функцию pandas read_clipboard, указав символ-разделитель. Эта функция создает новый DataFrame с данными, содержащимися в буфере обмена.

Попробуйте это сделать, выбрав данные из следующего примера и скопировав их:

Теперь просто используйте функцию read_clipboard, и у вас есть DataFrame – почти магия!

Результат будет таким же, как и выше.

Если символ-разделитель полей не является одним или несколькими пробелами, вы должны указать нужный символ или строку, передав параметр функции, например, read_clipboard(‘,’). Если вы вызываете функцию без параметров, в качестве разделителей будут использоваться пробелы.

DataFrame: таблица данных с маркированными строками и столбцами

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

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

Так, например, мы можем сохранить в DataFrame расписание занятий, где столбцы – это дни, строки – часы, а значения – это каждый урок или предмет. Или мы можем также хранить список вылетов рейсов, где столбцы представляют номер рейса, время вылета и пункт назначения.

Обратите внимание, что таблица может иметь один столбец или одну строку, поэтому если вы встретите данные в таком формате, они также могут быть загружены в DataFrame. Они даже могут иметь одну строку и один столбец, т.е

одно значение!

Чтобы было понятнее, я приведу пример таблицы для наглядности моих слов:

Имя Возраст
Иван 37
Петр 42
Алексей 40

Таблица 1: Пример таблицы, которая может быть загружена в DataFrame

Мы будем использовать таблицу, подобную этой, в некоторых примерах данной статьи.

Как открывать файлы с данными в pandas

Информация может храниться в файлах .csv или таблицах SQL. Возможно, в файлах Excel. Или даже файлах .tsv. Или еще в каком-то другом формате. Но цель всегда одна и та же. Если необходимо анализировать данные с помощью pandas, нужна , совместимая с pandas.

Структуры данных Python

В pandas есть два вида структур данных: Series и DataFrame.

Series в pandas — это одномерная структура данных («одномерная ndarray»), которая хранит данные. Для каждого значения в ней есть уникальный индекс.

DataFrame — двухмерная структура, состоящая из колонок и строк. У колонок есть имена, а у строк — индексы.

Загрузка файла .csv в pandas DataFrame

Для загрузки файла с данными в pandas используется функция .

Начнем с простого образца под названием zoo. В этот раз для практики вам предстоит создать файл .csv самостоятельно. Вот сырые данные:

Вернемся во вкладку “Home” Jupyter для создания нового текстового файла…

затем скопируем данные выше, чтобы вставить информацию в этот текстовый файл…

…и назовем его zoo.csv!

Это ваш первый файл.

Вернемся в Jupyter Notebook (который называется «pandas_tutorial_1») и откроем в нем этот файл!

Для этого нужна функция

Введем следующее в новую строку:

Готово! Это файл , перенесенный в pandas. Это двухмерная таблица — DataFrame. Числа слева — это индексы. А названия колонок вверху взяты из первой строки файла zoo.csv.

На самом деле, вам вряд ли придется когда-нибудь создавать файл для себя, как это было сделано в примере. Вы будете использовать готовые файлы с данными. Поэтому нужно знать, как загружать их на сервер!

Вот небольшой : ДАННЫЕ

Если кликнуть на ссылку, файл с данными загрузится на компьютер. Но он ведь не нужен вам на ПК. Его нужно загрузить на сервер и потом в Jupyter Notebook. Для этого нужно всего два шага.

Шаг 1) Вернуться в Jupyter Notebook и ввести эту команду:

Это загрузит файл на сервер. Проверьте:

Если кликнуть на него…

…можно получить всю информацию из файла.

Шаг 2) Вернуться в Jupyter Notebook и использовать ту же функцию (не забыв поменять имя файла и значение разделителя):

Данные загружены в pandas!

Что-то не так? В этот раз не было заголовка, поэтому его нужно настроить самостоятельно. Для этого необходимо добавить параметры имен в функцию!

Так лучше! Теперь файл .csv окончательно загружен в .

Булевы списки

Последним типом значения, которое вы можете передать в качестве индексатора, является логический массив или списока такжезначения. У этого метода есть реальная сила, и его можно использовать позже, когда мы начнем использоватьвпоставилзначения. Строки и столбцы, которые соответствуютзначения в индексаторе будут отфильтрованы. Массив не обязательно должен быть того же размера, что и соответствующий индекс, нобудет обрабатывать пропущенные значения, как если бы они были:

df.loc,       ]

Вы также можете использоватьБулевы маскигенерировать логические массивы, которые вы передаете, Если мы хотим видеть только покемонов типа «Fire», мы сначала сгенерируем логическую маску — который возвращает сериюзначения для каждой строки в кадре данных. Затем мы передаем эту маску в качестве индексатора строки в:

df.loc == 'Fire']


Первые несколько строк булево-отфильтрованного фрейма данных.

Все возможности здесь, такие как получение покемонов с более чем 175 атаками:

df.loc > 175]

Или те, у кого меньше 100 очков жизни и более 650 общих характеристик:

df.loc < 100) & (df > 650)]

Или с буквой «X» в названии или с типом «PsychicFairy»:

df.loc.str.contains('X')) |         (df.str.contains('PsychicFairy'))]

Отбор данных из dataframe в pandas

Это первая часть руководства, поэтому начнем с самых простых методов отбора данных, а уже в следующих углубимся и разберем более сложные.

Вывод всего dataframe

Базовый метод — вывести все данные из dataframe на экран. Для этого не придется запускать функцию снова и снова. Просто сохраните денные в переменную при чтении!

После этого можно будет вызывать значение каждый раз для вывода DataFrame!

Вывод части dataframe

Иногда удобно вывести не целый dataframe, заполнив экран данными, а выбрать несколько строк. Например, первые 5 строк можно вывести, набрав:

Или последние 5 строк:

Или 5 случайных строк:

Вывод определенных колонок из dataframe

А это уже посложнее! Предположим, что вы хотите вывести только колонки «country» и «user_id».

Для этого нужно использовать команду в следующем формате:

Есть предположения, почему здесь понадобились двойные квадратные скобки? Это может показаться сложным, но, возможно, так удастся запомнить: внешние скобки сообщают pandas, что вы хотите выбрать колонки, а внутренние — список (помните? Списки в Python указываются в квадратных скобках) имен колонок.

Поменяв порядок имен колонов, изменится и результат вывода.

Это DataFrame выбранных колонок.

  • article_read.user_id
  • article_read

Фильтрация определенных значений в dataframe

Если прошлый шаг показался сложным, то этот будет еще сложнее!

Предположим, что вы хотите сохранить только тех пользователей, которые представлены в источнике «SEO». Для этого нужно отфильтровать по значению «SEO» в колонке «source»:

Важно понимать, как pandas работает с фильтрацией данных:

Шаг 1) В первую очередь он оценивает каждую строчку в квадратных скобках: является ли значением колонки ? Результат всегда будет булевым значением ( или ).

Шаг 2) Затем он выводит каждую строку со значением из таблицы .

Выглядит сложно? Возможно. Но именно так это и работает, поэтому просто выучите, потому что пользоваться этим придется часто!

value counts

Это команда для проверки распределения значений. Например, если вы хотите проверить возможные значения и частоту для каждого отдельного значения в столбце «c», вы можете применить

df.value_counts()

Есть несколько полезных приемов / функций:
A. normalize = True : если вы хотите проверить частоту вместо подсчетов.
B. dropna = False : если вы хотите включить пропущенные значения в статистику.
C. sort = False : показать статистику, отсортированную по значениям, а не по количеству.
D. df.value_counts().reset_index().: если вы хотите преобразовать таблицу статистики в датафрейм Pandas и управлять ими.

Итоговая таблица

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

В качестве резюме я привожу здесь таблицу со всеми рассмотренными нами способами и функциями для создания DataFrame.

Источник данных Пример
Данные отсутствуют
Список списков,список словарей df = pd.DataFrame(list)
Словарь списков df = pd.DataFrame(dictionary)
Массив NumPy df = pd.DataFrame(array)
Формат CSV
Файл с полямиполя фиксированной ширины df = pd.read_fwf(‘data.fwf’)
Данные в буфере обмена df = pd.read_clipboard()
Веб-файлы или файлы HTML
Электронная таблица df = pd.read_excel(‘data.xlsx’)
JSON-файл df = pd.read_json(‘data.json’)
База данных SQL
Другие форматы См. таблицу 2

Таблица 3: Сводка создания DataFrames из различных форматов исходных данных

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: