<gh_stars>0
# Pandas
# Это библиотека типа NumPy
# Но, в отличии от NumPy область ее применения немного уже.
# Она используется для считывания таблиц типа CSV (таблицы Excel)
# То есть, это модуль для работы с файлами данных.
#
# Здесь мы рассмотрим функционал по Пандас реально больше, чем мы будем использвать.
# В нейронках Пандас используется не так часто и не много.
# Обычно загружают Пандас, переводят В Нампи и работют с Нампи. Кто-то любит раотать в Пандосе. Это дело вкуса.
# Пандас можно использовать для разных целей. На нем можно обучать нейронки, делать вычисления, присоединяться
# к серверам. Но, по большому счету, нам это все не нужно.
# От нее нам нужна лишь самая простая ф-я
#
# Для начала ее импортируем

import pandas as pd

# В отличии от Нампи Пандас мыслит как Эксель.
# У него есть строки и колонки со своими разваниями. На их пересечении храняться данные.
# Если в Нампи строки индексируются как 0,1,2,3..., то Пандас мыслит гораздо шире.
# У него есть понятие "Колонки" и "Строки", которыми мы можем оперировать так, как нам надо.
# Это похоже на Эксель. Кто работал много в Эксель, тому Пандас будет понять очень легко.

# Для начала создадим документ руками. Хотя, обычно его загружают.
# Данные записываем в формте Лист
from pandas.tests.io.test_pickle import files

columns = ['country', 'province', 'region_1', 'region_2']
index = [0, 1, 10, 100]
# Дальше data - это Лист из четырех Листов по 4 значения в каждом
data = [['Italy', 'Sicily & Sardinia', 'Etna', 'NaN'],
        ['Portugal', 'Douro', 'NaN', 'NaN'],
        ['US', 'California', 'Napa Valley', 'Napa'],
        ['US', 'New York', 'Finger Lakes', 'Finger Lakes']]

# Здесь могут быть не только строки, но и любые типы данных.
# В таком виде это хранить не удобно, но мы сейчас это загрузим в Пандас.
# В Пандасе есть одни основной класс. Как в Нампи есть np.array, в Пандасе это называесят DataFrame (таблица с данными)

df = pd.DataFrame(data, columns=columns, index=index)
# В качестве данных он принимает: data - в качестве данных, columns - заголовки(колонки), и индексы
# Пустых ячеек быть не может, поэтому вних проставляется 'NaN'
# Далее выводим на экран
print(df)
#       country           province      region_1      region_2
# 0       Italy  Sicily & Sardinia          Etna           NaN
# 1    Portugal              Douro           NaN           NaN
# 10         US         California   Napa Valley          Napa
# 100        US           New York  Finger Lakes  Finger Lakes

# Это и есть DataFrame. Все эти данные, которые были в неудобной форме Листа, он выдает в удобной форме.
# В Пандасе круто создан вывод на экран.
# То есть, Пандас хорош тем, что он структурирует для нас данные.
# И, в отличии от Листов, Пандас позволяет очень удобно этими данными оперировать.

# ------------------------- Загрузка и Запись данных ----------------------------

# Помимо того, что Пандас позволяет считывать данные, он позволяет их и создавать. В частности файлы CSV
# Для загрузки файлов в google-colab, прописываем импорт: from google.colab import files - это библиотека

# files.upload()  ф-я files вызывает интерфейс загрузки файла
# !ls  - выводит на экран список загруженных файлов

# Загрузили файл
DataFrame_from_csv = pd.read_csv('cars.csv', sep='&')
print(DataFrame_from_csv)

# Используем ф-ю head()
# data.head()
# Она выведет нам пять верхних строчек



