понеділок, 23 серпня 2021 р.

Статистичні дані числових стовпців

Знаходження екстремальних значень, суми, середнього і медіанного значення та підрахунку кількості значень
dataframe = pd.read_csv('titanic.csv')
print('Максимум:', dataframe['Age'].max())
print('Мінімум:', dataframe['Age'].min())
print('Середнє арифметичне:', dataframe['Age'].mean())
print('Медіана:', dataframe['Age'].median())
print('Мода:', dataframe['Age'].mode())
print('Сума елементів колонки:', dataframe['Age'].sum())
print('Кількість:', dataframe['Age'].count())
Максимум: 80.0
Мінімум: 0.42
Середнє арифметичне: 29.69911764705882
Медіана: 28.0
Мода: 0    24.0
dtype: float64
Сума елементів колонки: 21205.17
Кількість: 714
#До всього фрейму
PassengerId    891
Survived       891
Pclass         891
Name           891
Sex            891
Age            714
SibSp          891
Parch          891
Ticket         891
Fare           891
Cabin          204
Embarked       889
dtype: int64

четвер, 19 серпня 2021 р.

Додавання нових колонок і стовпчиків

Створення порожнього фрейму і додавання нових колонок
dataframe = pd.DataFrame()
# Створити і додати колонки
dataframe['Name'] = ['Іван Іваненко ', 'Петро Петренко']
dataframe['Age'] = [38, 25]
dataframe['Driver'] = [True, False]
# Показати фрейм
dataframe
     Name	        Age	Driver
0	Іван Іваненко	38	True
1	Петро Петренко	25	False
Створення і додавання нового рядка до фрейму
 # Створення рядка
new_person = pd.Series(['Сидір  Сидоренко', 40, True], index=['Name','Age','Driver'])
# Додавання в кінець фрейму
dataframe.loc[len(dataframe)]=new_person

            Name	Age	Driver
0	Іван Іваненко	38	True
1	Петро Петренко	25	False
2	Сидір Сидоренко	40	True

вівторок, 17 серпня 2021 р.

Завантаження Exel-файлу

# Завантаження бібліотеки
import pandas as pd
#різні режими завантаження
dataframe = pd.read_excel('file.xlsx',, index_col=None, header=None) 
dataframe = pd.read_excel('file.xlsx', sheetname=0, header=1)
#  або за URL
url = 'https://site/file.xls'
dataframe = pd.read_excel(url, sheetname=0, header=1)

понеділок, 9 серпня 2021 р.

Перегляд фрейму

Створимо синтетичний набір даних індексований часовим рядом DatetimeIndex:
dates = pd.date_range("20210109", periods=6)
data = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
data.shape
(6,4)

data

                A	         B	         C	        D
 ___________________________________________________________________________
2021-01-09	0.388125	-1.202547	-1.249485	0.751333
2021-01-10	1.033439	0.175955	0.100732	-0.062862
2021-01-11	0.786448	-0.762654	0.542246	0.395827
2021-01-12	0.523685	0.176968	-0.606602	-1.421410
2021-01-13	0.609091	0.446525	-0.237162	-0.075100
2021-01-14	0.774839	0.149868	0.494714	0.054106

Перегляд перших трьох і останніх двох рядків фрейму


data.head(3)

                 A            B            C         D 
_________________________________________________________________________
2021-01-09 & -0.384154 & -1.015396 & -2.790040 &  0.021946 
2021-01-10 &  0.497643 &  1.156721 & -0.578700 &  0.453576
2021-01-11 & -0.128772 & -0.845799 &  0.954693 & -1.095001 
data.tail(2)
               A             B        C          D  
_________________________________________________________________
2021-01-13   -0.364495   -0.887037    0.085531    0.427110  
2021-01-14    0.799109    0.790806   -0.302740   1.338427  
Перегляд останньої колонки фрейму використовуючи зрізи
data.iloc[:,-1:]
	             D
 _______________________
2021-01-09	0.751333
2021-01-10	-0.062862
2021-01-11	0.395827
2021-01-12	-1.421410
2021-01-13	-0.075100
2021-01-14	0.054106

# тільки значення без заголовків
data.iloc[:,-1:].values

array([[ 0.75133295],
       [-0.06286193],
       [ 0.39582721],
       [-1.42140991],
       [-0.07510039],
       [ 0.05410612]])
Перегляд всіх колонок крім останньої
data.iloc[:,:-1]
# тільки значення без заголовків
data.iloc[:,:-1].values
Вивід кількох сусідніх рядків отримується стандартним зрізом індексів. Функція data.take(список індексів) повертає рядки із вказаними номерами.
data[2:4]#  перегляд діапазону рядків
  
               A	         B	         C	        D
 __________________________________________________________________________
2021-01-11	0.786448	-0.762654	0.542246	0.395827
2021-01-12	0.523685	0.176968	-0.606602	-1.421410
# пепрегляд рядків за списком номерів
data.take([2,4])

               A            B	          C	       D
  ____________________________________________________________________________
2021-01-11	0.786448	-0.762654	0.542246	0.395827
2021-01-13	0.609091	0.446525	-0.237162	-0.075100
 
Вивід лише значень
data.take([2,4]).values
  
  array([[ 0.78644793, -0.76265406,  0.542246  ,  0.39582721],
       [ 0.60909124,  0.44652491, -0.23716184, -0.07510039]])
   

неділя, 8 серпня 2021 р.

Розподіл даних на тестову та навчальну вибірки

Розподіл даних на на навчальний та тестовий набори є важливим кроком попередньої обробки даних який покращує ефективність та точність моделі.
  • Тренувальний набір (X_train): Підмножина набору даних відгуки яких (y_train) відомі і які використовуються для навчання моделі.
  • Тестовий набір ( X_test): підмножина набору даних для перевірки навченої моделі, відгуки яких (y_train) відомі і які використовуються для перевірки якості навченої моделі на тренувальних даних
Для розподілу використовується клас train_test_split sklearn-бібліотеки model_selection. Приклад розбиття
X, y = np.arange(16).reshape((-1, 2)),range(8)
X
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11],
       [12, 13],
       [14, 15]])
list(y)
[0, 1, 2, 3, 4, 5, 6, 7]
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, y,test_size = 0.2,random_state = 0)
[X_train, y_train]	
[array([[14, 15],
        [ 4,  5],
        [ 8,  9],
        [ 6,  7],
        [12, 13]]), [7, 2, 4, 3, 6]]
																														
[X_test, y_test]
[array([[ 2,  3],
        [10, 11],
        [ 0,  1]]), [1, 5, 0]]
В train_test_split() ми передали 4 параметри -- два масиви X, y наборами даних і відгуками, test_size -- частка даних яка виділяється на тестовий набір, у нашому випадку це 33%, за умовчанням цей параметр рівний $0.25.$ Останній параметр random_state є параметром для генератора випадкових випадків, який перемішує дані.

субота, 7 серпня 2021 р.

Збереження фрейму в CSV-файлі

Mathedemo
DataFrames-це двовимірна структура даних з індексами для рядків і стовпців, яка використовується для зберігання значення будь-якого типу. В основному, DataFrames є словником на основі масивів NumPy.
# створюємо тестову таблицю
dates = pd.date_range("20210109", periods=6)
data = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
#Зберігаємо у файлі
data.to_csv('file1.csv')

Зберігаємо без заголовків стовпчиків і індексів рядків

data.to_csv('file2.csv', header=False, index=False)

Завантаження CSV-файлу у фрейм

from pandas import read_csv
filename = 'melb_data.csv'
melbourne_data = pd.read_csv(filename)
# розмір таблиці 
print(melbourne_data.shape)
(18396, 22)
# інформація про назви колонок ( ознак)
melbourne_data.columns
Index(['Unnamed: 0','Suburb','Address', 'Rooms', 'Type', 'Price', 'Method',
       'SellerG', 'Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom',
       'Car', 'Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea',
       'Lattitude', 'Longtitude', 'Regionname', 'Propertycount'],
      dtype='object')