мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
python:week20 [01/10/2018 03:25] – [Создание объекта] ybezrukovpython:week20 [04/04/2021 21:56] (текущий) – [Ввод/вывод] Admin Adminovich
Строка 102: Строка 102:
  
  
-<code> +<code>      
-      +
 A           float64 A           float64
 B    datetime64[ns] B    datetime64[ns]
Строка 111: Строка 110:
 F            object F            object
 dtype: object dtype: object
 +</code>
 +
 +====== Просмотр данных ======
 +
 +Просмотрим начальные и конечные строки в датафрейме. Функция head без аргументов вернет 5 первых строк, а tails с аргументом 3 - три последних
 +
 +<code python>
 +      
 +print(df.head())
 +
 +</code>
 +
 +<code>
 +                                           D
 +2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
 +2013-01-02  1.212112 -0.173215  0.119209 -1.044236
 +2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
 +2013-01-04  0.721555 -0.706771 -1.039575  0.271860
 +2013-01-05 -0.424972  0.567020  0.276232 -1.087401
 +</code>
 +
 +
 +<code python>
 +      
 +print(df.tail(3))
 +
 +</code>
 +
 +<code>
 +                                           D
 +2013-01-04  0.721555 -0.706771 -1.039575  0.271860
 +2013-01-05 -0.424972  0.567020  0.276232 -1.087401
 +2013-01-06 -0.673690  0.113648 -1.478427  0.524988
 +</code>
 +
 +
 +С помощью функций index, columns и values можно просмотреть значения индексов (имена строк), имена колонок и значения внутри таблицы.
 +<code python>
 +      
 +print(df.index)
 +print(df.columns)
 +print(df.values)
 +
 +</code>
 +
 +Функция describe() покажет краткую сводку о данных
 +<code python>
 +print(df.describe())
 +</code>
 +
 +<code>
 +              A                         D
 +count  6.000000  6.000000  6.000000  6.000000 # количество строк
 +mean   0.073711 -0.431125 -0.687758 -0.233103 # среднее значение элементов в столбце
 +std    0.843157  0.922818  0.779887  0.973118 # стандартное отклонение для каждого элемента
 +min   -0.861849 -2.104569 -1.509059 -1.135632 # наименьший элемент
 +25%   -0.611510 -0.600794 -1.368714 -1.076610 # 25 перцентиль
 +50%    0.022070 -0.228039 -0.767252 -0.386188 # 50 перцентиль или медиана
 +75%    0.658444  0.041933 -0.034326  0.461706 # 75 перцентиль
 +max    1.212112  0.567020  0.276232  1.071804 # наибольший элемент
 +</code>
 +
 +Транспонировать таблицу (отразить относительно диагонали)
 +
 +<code python>
 +print(df.T)
 +</code>
 +
 +<code>
 +   2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06
 +A    0.469112    1.212112   -0.861849    0.721555   -0.424972   -0.673690
 +B   -0.282863   -0.173215   -2.104569   -0.706771    0.567020    0.113648
 +C   -1.509059    0.119209   -0.494929   -1.039575    0.276232   -1.478427
 +D   -1.135632   -1.044236    1.071804    0.271860   -1.087401    0.524988
 +</code>
 +
 +Упорядочить по направлению (например, по имени столбца)
 +
 +<code python>
 +print(df.sort_index(axis=1, ascending=False))
 +</code>
 +
 +<code>
 +                                           A
 +2013-01-01 -1.135632 -1.509059 -0.282863  0.469112
 +2013-01-02 -1.044236  0.119209 -0.173215  1.212112
 +2013-01-03  1.071804 -0.494929 -2.104569 -0.861849
 +2013-01-04  0.271860 -1.039575 -0.706771  0.721555
 +2013-01-05 -1.087401  0.276232  0.567020 -0.424972
 +2013-01-06  0.524988 -1.478427  0.113648 -0.673690
 +</code>
 +
 +Упорядочить по значению элементов столбца (например по столбцу B)
 +
 +<code python>
 +print(df.sort_values(by='B'))
 +</code>
 +
 +<code>
 +                                           D
 +2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
 +2013-01-04  0.721555 -0.706771 -1.039575  0.271860
 +2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
 +2013-01-02  1.212112 -0.173215  0.119209 -1.044236
 +2013-01-06 -0.673690  0.113648 -1.478427  0.524988
 +2013-01-05 -0.424972  0.567020  0.276232 -1.087401
 +</code>
 +
 +
 +Строки можно перебрать и с помощью цикла for, для этого нужно воспользоваться функцией iterrows
 +
 +<code python>
 +for index,row in df.iterrows():
 +    print(row['A']) 
 +</code>
 +
 +======= Выборки =======
 +
 +===== Получение =====
 +
 +Выбор данных из колонок и стобцов очень похож на работу с списками. Одна колонка
 +
 +<code python>
 +print(df['A'])
 +</code>
 +
 +Диапазон строк по номеру
 +
 +<code python>
 +print(df[0:3])
 +</code>
 +Диапазон строк по значению индекса
 +<code python>
 +
 +print(df['20130102':'20130104'])
 +</code> 
 +
 +===== Выборка по метке =====
 +Для сечения таблицы по метке используется функция loc, например, получим все значения для строки, индекс которой совпадает с нулевым элементом списка dates (мы его создавали в самом начале)
 +<code python>
 +print(df.loc[dates[0]])
 +</code>
 +Никто не мешает нам выбрать одновременно по двум осям - строкам и столбцам. Выберем подтаблицу, которая содержит все строки и два столбца
 +
 +
 +<code python>
 +print(df.loc[:,['A','B']])
 +</code>
 +
 +Или только три строки
 +
 +<code python>
 +print(df.loc['20130102':'20130104',['A','B']])
 +</code>
 +
 +Одно значение из таблицы получим с помощью
 +
 +<code python>
 +print(df.loc[dates[0],'A'])
 +</code>
 +
 +===== Выборка по позиции =====
 +
 +Для получения по позиции или по номеру используется функция iloc. Возьмем третью строку
 +
 +<code python>
 +print(df.iloc[3])
 +</code>
 +
 +Или строки с третьей по четвертую и столбцы с нулевого по первый (внимание, что правые границы диапазонов, т.е. строка с номером 5 и столбец с номером два, не включаются в результат)
 +
 +<code python>
 +print(df.iloc[3:5,0:2])
 +</code>
 +
 +Вместо диапазонов можно указать конкретные строки или столбцы, например
 +
 +<code python>
 +print(df.iloc[df.iloc[[1,2,4],[0,2]]])
 +</code>
 +
 +Или же, например, получить несколько строк полностью
 +<code python>
 +print(df.iloc[df.iloc[1:3,:]])
 +</code>
 +Аналогично со столбцами
 +<code python>
 +print(df.iloc[:,1:3])
 +</code>
 +
 +===== Фильтрация с помощью логических выражений =====
 +
 +Выберем из таблица все строки, где значения из колонки А положительны
 +
 +<code python>
 +print(df[df.A > 0])
 +</code>
 +
 +Или только положительные данные во всей таблице
 +
 +<code python>
 +print(df[df > 0])
 +</code>
 +
 +<code>
 +                                           D
 +2013-01-01  0.469112       NaN       NaN       NaN
 +2013-01-02  1.212112       NaN  0.119209       NaN
 +2013-01-03       NaN       NaN       NaN  1.071804
 +2013-01-04  0.721555       NaN       NaN  0.271860
 +2013-01-05       NaN  0.567020  0.276232       NaN
 +2013-01-06       NaN  0.113648       NaN  0.524988
 +</code>
 +
 +Обратите внимание, что все отрицательные элементы были заменены на NaN. Специальный тип данных, указывающий на отсутствие значения.
 +
 +Функция isin сверяет значения из строки или столбца со списком, и возвращает только те, которые содержатся и там, и там
 +
 +<code python>
 +df2 = df.copy() # функция copy копирует данные из одного датафрейма в другой
 +df2['E'] = ['one', 'one','two','three','four','three'] # добавим новый столбец с именем Е и присвоим ему значения из списка
 +
 +print(df2)
 +
 +print(df2['E'].isin(['two','four'])) # выделим из нашей таблицы только те строки, которые содержат слова two и four в столбце Е
 +</code>
 +
 +
 +
 +<code>
 +                                                E
 +2013-01-01  0.469112 -0.282863 -1.509059 -1.135632    one
 +2013-01-02  1.212112 -0.173215  0.119209 -1.044236    one
 +2013-01-03 -0.861849 -2.104569 -0.494929  1.071804    two
 +2013-01-04  0.721555 -0.706771 -1.039575  0.271860  three
 +2013-01-05 -0.424972  0.567020  0.276232 -1.087401   four
 +2013-01-06 -0.673690  0.113648 -1.478427  0.524988  three
 +
 +                                               E
 +2013-01-03 -0.861849 -2.104569 -0.494929  1.071804   two
 +2013-01-05 -0.424972  0.567020  0.276232 -1.087401  four
 +</code>  
 +
 +====== Ввод/вывод ======
 +
 +Представить столбец в виде списка
 +
 +<code python>
 +l = df['Column'].to_list()
 +</code>
 +===== CSV =====
 +Чтение CSV файла делается в одну строку
 +<code python> 
 +pd.read_csv('foo.csv')
 +</code> 
 +
 +
 +====== Задача 4 ======
 +
 +Найти всех легендарных покемонов.
 +
 +====== Задача 5 ======
 +
 +Найти всех производителей шоколада, относящихся к конкретной стране и напечатать их на экран в виде 
 +
 +<code>
 +Страна1
 + Производитель1.1
 + Производитель1.2
 +
 +Страна2
 + Производитель2.1
 + Производитель2.2
 + Производитель2.3
 </code> </code>