192 KiB
192 KiB
работа с данными, чтение и запись csv
In [1]:
import pandas as pd
df = pd.read_csv("data/country.csv")
df.to_csv("test1.csv")
работа с даннными, основные команды
In [2]:
df.info()
print(df.describe().transpose())
cleared_df = df.drop(["Continent"], axis=1) # удаляет колонку
print(cleared_df.head())
print(cleared_df.tail())
print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
sorted_df = cleared_df.sort_values(by="Capital")
print(sorted_df.head())
print(sorted_df.tail())
работа с данными, работа с элементами
In [3]:
print(df["Continent"]) # выводит колонку таблицы
print(df.loc[100]) # выводит данные по одному объекту таблицы(по строке)
print(df.loc[100, "Country/Territory"]) # выводит данные по конкретному столбцу конкретной строки
print(df.loc[100:200, ["Country/Territory", "Capital"]]) # выводит данные с диапозона строк по столбцам
print(df[0:3]) # просто выводит данные с с диапозона строк в таблице
print(df.iloc[0])
print(df.iloc[:, 0:2]) # так как айлок работает с индексами с помощью 3-5 мы задаем строки, которые хотим вывести, а спомощью 0-2 задаем столбцы которые хотим вывести
print(df.iloc[[3, 6], [0, 1]]) # здесь 3,4 означает также номера строк, но не диапазон. 0,1 означает номера столбцов. но также не диапазон
# лок отличается от айлока тем что позволяет создавать срезы, использует метки(названия столбцов как минимум). Айлок работает с индексами
работа с данными - отбор и группировка
In [4]:
s_values = df["Continent"].unique() # выводит все уникальные значения по столбцу
print(s_values)
s_total = 0
for s_value in s_values:
count = df[df["Continent"] == s_value].shape[0] # шэйп возвращаеет кортеж колва строк и колва столбцов в таблице. так как мы толлько что таблицу фильтранули, мы выводим шэйп с индексом 0(строки)
s_total += count
print(s_value, "count =", count)
print("Total count = ", s_total)
# print(df.groupby(["Pclass", "Survived"]).size().reset_index(name="Count")) # невозможно применить к данным таблицы
визуализация - исходные данные
In [5]:
data = df.copy()
data.dropna(subset=["Capital"], inplace=True) # дропна позволяет удалить строчки, с пустым значением по столбцу(сабсет) и не перезаписывать таблицу(инплэйс тру)
print(data)
data.to_csv('test2.csv')
In [7]:
dd = pd.read_csv("data/healthcare.csv")
ddata = dd[["age", "work_type", "avg_glucose_level"]].copy()
In [8]:
# функции для поиска квартилей
def q1(x):
return x.quantile(0.25)
# median = quantile(0.5)
def q2(x):
return x.quantile(0.5)
def q3(x):
return x.quantile(0.75)
# интерквартильный размах
def iqr(x):
return q3(x) - q1(x)
# нижняя граница для обнаружения выбросов(е..ть)
def low_iqr(x):
return max(0, q1(x) - 1.5 * iqr(x))
# верхняя граница для обнаружения выбросов
def high_iqr(x):
return q3(x) + 1.5 * iqr(x)
# aggregate позволяет выполнить все эти функции к данным каждой группы и записать их в таблицу
quantiles = ddata[["work_type", "avg_glucose_level"]].groupby(["work_type"]).aggregate(["min", q1, q2, "median", q3, "max"])
print(quantiles)
iqrs = ddata[["work_type", "avg_glucose_level"]].groupby(["work_type"]).aggregate([low_iqr, iqr, high_iqr])
print(iqrs)
ddata.boxplot(column="avg_glucose_level", by="work_type")
Out[8]:
визуализация- гистограмма
In [9]:
ddata.plot.hist(column=["avg_glucose_level"], bins=80)
Out[9]:
Визуализация - точечная диаграмма
In [10]:
ddata.plot.scatter(x="avg_glucose_level", y="age")
ddata.plot.scatter(x="age", y="work_type")
Out[10]:
столбчатая диаграмма
In [11]:
plot = dd.groupby(["work_type", "gender"]).size().unstack().plot.bar(color=["pink", "green"])
plot.legend(["Male", "Female"])
Out[11]: