Часть 1: Серия и DataFrame

Как установить

pip install pandas

Как пользоваться библиотекой

import pandas as pd

Ряд

  • 1 массив измерений с одинаковыми элементами типа данных

кадр данных

  • 2-мерный массив с различными элементами типа данных для каждого столбца
  • Ориентирован на столбцы

Создать серию

  1. Напрямую
ser = pd.Series([10, 20, 30, 40])
type(ser)
>> <class 'pandas.core.series.Series'>
ser.index
>> RangeIndex(start=0, stop=4, step=1)
  • pd.Series() : поместить список для создания серии

2. Индекс серии для маркировки

grades = ['A', 'B+', 'A+', 'A']
ser = pd.Series(grades, index=['sam', 'june', 'max', 'july'])
print(ser[0], ser[2]) # access with int index
print(ser['sam'], ser['max']) # access with label
>> A A+
ser.index
>> Index(['sam', 'june', 'max', 'july'], dtype='object')

3. Словарь сериалов

grades = {'sam':'A', 'june':'B+', 'max':'A+', 'july':'A'}
ser = pd.Series(grades)

Создать фрейм данных

  1. Без метки столбца
import pandas as pd
import numpy as np
df = pd.DataFrame(np.zeros((4,3)))
type(df)
>> <class 'pandas.core.frame.DataFrame'>

2. С меткой столбца

import pandas as pd
import numpy as np
classes = ['science', 'english', 'math']
df = pd.DataFrame(np.zeros((4,3)), columns = classes)

3. Использование словарей и списков

import pandas as pd
names = ['sam', 'june', 'max', 'july']
korean = [100, 95, 90, 85]
english = [85, 90, 95, 100]
math = [90, 85, 100, 95]
df = pd.DataFrame({'name':names, 'korean':korean, 'english':english, 'math':math})

4. Индекс строки для метки

import pandas as pd
names = ['sam', 'june', 'max', 'july']
korean = [100, 95, 90, 85]
english = [85, 90, 95, 100]
math = [90, 85, 100, 95]
df = pd.DataFrame({'korean':korean, 'english':english, 'math':math}, index=names)

Доступ к фрейму данных

  1. Указатель столбца к ряду
# continued
name_ser = df['name']
type(name_ser)
>> <class 'pandas.core.series.Series'>

2. Индекс столбца для DataFrame

# continued
classes_df = df[['name', 'math']]
type(classes_df)
>> <class 'pandas.core.frame.DataFrame'>

3. Трансляция

# continued
df['english'] = df['english'] + 10

4. Получить строку

# continued
print(df[1:2])
print(df[2:])

5. Получить элемент

# Continued
# Column - Row
# Element
print(df['korean'][1])
# Row - Column
# Series
print(df[1:2]['korean'])

6. Логическое индексирование

# continued (4) Row Index to Label 
bool_index = df['math'] > 90
print(bool_index)
print(df[bool_index])

bool_index = df > 90
print(bool_index)
print(df[bool_index])

Расширенное индексирование DataFrame

  • Ориентированный на строку
  • loc: индексация ярлыков
  • iloc : индексация int
df.loc[row index]
df.loc[rwo index, column index]
df.loc[row slicing]
df.loc[boolean list]

Пример для расширенного локального индексирования

# continued (4) Row Index to Label
df.loc['sam']

df.loc[['sam', 'max']]
df.loc['sam', 'korean']

df.loc['june':'july'] # includes july! 
df.loc[df['korean']>90]

df.loc[['sam', 'june'],['math','english']]
df.loc[df['math']>90,['korean','english']]

Пример для iрасширенного индексирования

# continued (4) Row Index to Label
df.iloc[0]
df.iloc[[0,2]]
df.iloc[0,0]

df.iloc[0:2] # does NOT include max! 
df.iloc[0:2, 1:3]
df.iloc[[0,3],[1,2]]

df.iloc[0]>90
df.iloc[0][df.iloc[0]>90]
# sam's subject over 90