Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Grupa 3] Projekt2 KM1+KM2 Szmajdziński Pawlikowski #383

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
369 changes: 369 additions & 0 deletions Prace_domowe/Praca_domowa1/Grupa3/Pawlikowski_Maciej/pd1.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,369 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Praca domowa 1- eksploracja danych"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pandas_profiling\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import math\n",
"from mpl_toolkits.mplot3d import Axes3D"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data=pd.DataFrame(pd.read_json('https://api.apispreadsheets.com/api/dataset/forest-fires/',orient='split'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(f'liczba obserwacji: {data.shape[0]}, Liczba kolumn: {data.shape[1]}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Rozpoczniemy od sprawdzenia kompletności danych."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Żadna z kolumn nie zawiera nulli więc dane nie są wybrakowane"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Pprzebadania naszego targetu,który chcemy miodelować, czyli daną area."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data['area'].describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Łatwo zauważyć, że większość obserwacji znajduje się blisko zera."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(f'Kurtoza: {data[\"area\"].kurt()}')\n",
"print(f'Skośność: {data[\"area\"].skew()}')\n",
"sns.distplot(data['area'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Z wykresu szybko wnioskujemy, że przydałoby się transformować tą zmienną do jej analizy. Skorzystamy z $\\log(x)$ zgodnie z sugestią autorów danych."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data['area(log)']=data['area'].map(lambda x: np.log(x+1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(f'Kurtoza: {data[\"area(log)\"].kurt()}')\n",
"print(f'Skośność: {data[\"area(log)\"].skew()}')\n",
"sns.distplot(data['area(log)'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Od razu widać większą przejrzystość"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.boxplot(x='month',y='area(log)',data=data,order=['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'],)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Łatwo zauważyć, że to włąśnie podczas miesięcy letnich miały miejsce najgorsze pożary, co jednak ciekawe to w maju i w grudniu dolny kwartyl nie jest w zerze(bądź bardzo blisko niego)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.boxplot(x='day',y='area(log)',data=data,order=['mon','tue','wed','thu','fri','sat','sun'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sns.countplot(data=data,x='day',order=['mon','tue','wed','thu','fri','sat','sun'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tu bez większych niespodzianek dzień tygodnia nie wpływa zbytnio na rozmiar, ani na częstotliwość pożarów pożarów."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Następnie spojrzymy na cechy ciągłe w poszukiwaniu większej ilości zależności"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data.describe()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data.hist(bins=10, figsize=(15,10))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Co ciekawe partie lasu najczęściej dotykane przez pożary są przedzielone pasmami, w których pożary nie występuję(z rozkładu zmiennych X i Y). Widzimy również, że FFMC oraz rain są skupione blisko jednej wartości. A ISI i temp najbardziej przypominają rozkłąd normalny."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sprawdźmy więc, w których częściach lasu występują najgroźniejsze pożary.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df=data.iloc[:,[0,1,12]]\n",
"\n",
"\n",
"plt.show()\n",
"fig = plt.figure()\n",
"ax = fig.gca(projection='3d')\n",
"ax.bar3d(df['Y'], df['X'],0,0.5,0.5,df['area'], cmap=plt.cm.viridis, linewidth=0.02)\n",
"ax.view_init(90, 0)\n",
"\n",
"\n",
"plt.show()\n",
"fig = plt.figure()\n",
"ax = fig.gca(projection='3d')\n",
"ax.bar3d(df['Y'], df['X'], 0,0.5,0.5,df['area'], cmap=plt.cm.viridis, linewidth=0.02)\n",
"\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Z wykresów widzimy, że najgorsze pożary wybuchają w centralnej części lasu oraz na obrzeżach."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data_subset=data[['FFMC','rain','ISI','temp','area','area(log)']]\n",
"sns.set()\n",
"sns.pairplot(data_subset, height=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zauważamy pewne zależności pomiędzy ISI,a FFMC oraz pomiędzy temp, a FFMC.\n",
"## Sprawdzamy, więc współczynniki korelacji pomiędzy zmiennymi."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.figure(figsize=(10,10))\n",
"sns.heatmap(data.corr(),annot=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zauważamy, że X i Y są ze sobą dość mocno skorelowane podobnie jak zmienne FFMC, DMC, DC, ISI oraz temp. Niestety nie znajdujemy żadnych korelacji pomiędzy area, a innymi zmiennymi."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.figure(figsize=(10,10))\n",
"k = 5\n",
"cols = data.corr().nlargest(k, 'area')['area'].index\n",
"cm = np.corrcoef(data[cols].values.T)\n",
"sns.set(font_scale=1.25)\n",
"hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Zmiennymi najbardziej skorelowanymi do area okazują się temp, DMC i X."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pandas_profiling.ProfileReport(data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Automatyczny sposób eksploracji danych pozwala szybko zapoznać się ze strukturą danych, jednak nie daje ich pełnej analizy. Jest to dobry punkt początkowy ukazujący podstawowe zależności między danymi. Nie daje on jednak zbytniej sfobody co do zależności, które wyświetla np. nie możemy sprawdzić korelacji zmiennych ciągłych z kategorycznymi. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Binary file not shown.
Loading