Dataframe у Python - основи

Post on 16 жовтня 2020
by Super User
Базові дії з Dataframe у Python - створення, звернення до стовбців та рядків, додавання і видалення, перебір елементів.


Онлайн консоль для програмування на Python: див. посилання https://repl.it/languages/python3


Для того, щоб застосувати наведені нижче оператори, необхідно підключити бібліотеки (їх ще називають "модулі", "розширення"). Бібліотеки дають можливість користуватись певними структурами даних, виконувати деякі математичні обчислення, будувати графіки.
Щоб підключити бібліотеки, на початку програми необхідно вставити наступні рядки: 


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import random

Створення датафрейму
 
Створення з певною кількістю рядків:
N=20
df = pd.DataFrame({
   'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
   'x': np.linspace(0,stop=N-1,num=N),
   'y': np.random.rand(N),
   'C': np.random.choice(['Low','Medium','High'],N).tolist(),
   'D': np.random.normal(100, 10, size=(N)).tolist()
   })
 
Створення датафрейму з набору ключ-масив даних
df = pd.DataFrame({'name': ['Earth', 'Moon', 'Mars'], 'mass_to_earth': [1, 0.606, 0.107]})
 
Створення датафрейму, у якому окремо вказується масив даних, назви стовбців. Індекс - тобто унікальний номер рядка - генерується автоматично від 0
df = pd.DataFrame([['Earth', 1], ['Moon', 0.606], ['Mars', 0.107]], columns=['name', 'mass_to_earth'])
 
Створення датафрейму, у якому дані вказуються по-рядково (по-масивно), окремо - назви стовбців і назви індексів. При цьому к-сть назв колонок = кількості елементів у рядку-масиві (тут - два), к-сть рядків=к-сть масивів даних (тут - три)
df = pd.DataFrame([['Earth', 1], ['Moon', 0.606], ['Mars', 0.107]], columns=['name', 'mass_to_earth'], index=['one', 'two','three'])
 
 
Далі, якщо не вказано інше, команди виконуються на прикладі датафрейму, у якому дані вказуються по-рядково (по-масивно), окремо - назви стовбців і назви індексів.
 
 
Вивести стовбець, в результаті отримуються дані у формі Series
df.name
 
Вивести рядок датафрейму по індексу-числу, яке було створено автоматично, або просто є числом, в результаті отримуються дані у формі Series
df.iloc[1]
 
Вивести рядок датафрейму по індексу-ключу, яке було створено спеціально, в результаті отримуються дані у формі Series
df.loc['one']
 
Вивести окремий елемент датафрейму, який розташований на перетині стовбця name і рядка з індексом 2 (з унікальним порядковим номером 2)
df.name[2]
 
Вивести окремий елемент датафрейму, який розташований на перетині стовбця name і рядка з індексом 'one'
df.name['one']
 
Вивести рядки датафрейму у певному діапазоні числових індексів. Результат - датафрейм
df[1:3]
 
 
Розмір датафрейму - показує к-сть рядків
len(df)
Або
len(df.index)
 
Кількість стовбців датафрейму
len(df.columns)
 
 
Сума по одному стовбцю датафрейм. Результат - датафрейм
df[['num']].sum()
Сума по одному стовбцю датафрейм. Результат - число
df['num'].sum()
Сума по кільком стовбцям, імена стовбців перелічуються через кому
df[['num','mass_to_earth']].sum())
 
Сума по усім стовбцям датафрейму (функція sum з параметром axis=0), результат - датафрейм
df.sum(axis=0)
Сума по усім рядкам датафрейму (функція sum з параметром axis=1), результат - датафрейм
df.sum(axis=1)
 
 
Додати до датафрейму стовбець на основі даних у форматі Series. К-сть елементів у Серіез має бути рівним кількості рядків у Датафрейм
df['num']=pd.Series([200,300,400]).values
 
Додати до датафрейму стовбець у форматі датафрейм
df['sum1']=df.sum(axis=1)
 
Додати до датафрейму рядок у форматі датафрейм
df.loc['sum2'] = df.sum(axis=0)
 
Додати масив як стовбець до датафрейму. К-сть даних у масиві повинна бути рівна к-сті рядків у датафреймі
st=['a','s','d','f']
df['sum11']=st
 
Додати масив як рядок до датафрейму рядок. К-сть даних у масиві повинна бути рівна к-сті стовбців у датафреймі
rd=['aa','ss','dd','ff',4]
df.loc['sum22'] = rd
 
Звернутись (перебрати) стовбці датафрейму по ключу стовбця
for col in df:
    print ('col=',col,'\n')
    print (df[col])
 
Звернутись (перебрати) рядки датафрейму по індексу-ключу рядків
for date, row in df.T.iteritems():
    print (date,df.loc[date]['name'])
 
 
Видалити рядок датафрейму чи серіес з отриманням нового об'єкту 
df2=df.drop('one')
Видалити кілька рядків датафрейму чи серіес з отриманням нового об'єкту 
df3=df.drop(['one','two'])
Видаленна рядків з викристанням вказівника рядків axis=0
ddd=df
ddd=df.drop(['one','two'],axis=0)
 
Видалити стовбці датафрейму з отриманням нового об'єкту 
dd=df
dd=df.drop(['name','num'],axis=1)

Дізнатись більше: див. посилання.