Commit 1f0d9753 by Patryk Czarnik

jupyter koniec i analiza w Pycharm

parent 513fe57c
import pandas
# emps = pandas.read_csv('emps.csv', sep=';')
emps = pandas.read_csv('emps.csv', sep=';', index_col='employee_id', parse_dates=['hire_date'])
print('Dane wczytane')
print(emps)
print('-'*80)
print('Średnia pensja:', emps.salary.mean())
print('Średnia pensja programistów:', emps[emps.job_title == 'Programmer'].salary.mean())
print('='*80)
# bierzemy rekord o ID = 100
king = emps.loc[100]
print(king)
print()
print(king.first_name, king.last_name, 'zarabia', king.salary)
print(king["first_name"], king["last_name"], 'zarabia', king["salary"])
employee_id;first_name;last_name;job_title;salary;hire_date;department_name;address;postal_code;city;country
100;Steven;King;President;24000;1997-06-17;Executive;2004 Charade Rd;98199;Seattle;United States of America
101;Neena;Kochhar;Administration Vice President;17000;1999-09-21;Executive;2004 Charade Rd;98199;Seattle;United States of America
102;Lex;De Haan;Administration Vice President;17000;2003-01-13;Executive;2004 Charade Rd;98199;Seattle;United States of America
103;Alexander;Hunold;Programmer;9000;2000-01-03;IT;2014 Jabberwocky Rd;26192;Southlake;United States of America
104;Bruce;Ernst;Programmer;6000;2001-05-21;IT;2014 Jabberwocky Rd;26192;Southlake;United States of America
105;David;Austin;Programmer;4800;2007-06-25;IT;2014 Jabberwocky Rd;26192;Southlake;United States of America
106;Valli;Pataballa;Programmer;4800;2008-02-05;IT;2014 Jabberwocky Rd;26192;Southlake;United States of America
107;Diana;Lorentz;Programmer;4200;2009-02-07;IT;2014 Jabberwocky Rd;26192;Southlake;United States of America
108;Nancy;Greenberg;Finance Manager;12000;2004-08-17;Finance;2004 Charade Rd;98199;Seattle;United States of America
109;Daniel;Faviet;Accountant;9000;2004-08-16;Finance;2004 Charade Rd;98199;Seattle;United States of America
110;John;Chen;Accountant;8200;2007-09-28;Finance;2004 Charade Rd;98199;Seattle;United States of America
111;Ismael;Sciarra;Accountant;7700;2007-09-30;Finance;2004 Charade Rd;98199;Seattle;United States of America
112;Jose Manuel;Urman;Accountant;7800;1998-03-07;Finance;2004 Charade Rd;98199;Seattle;United States of America
113;Luis;Popp;Accountant;6900;2009-12-07;Finance;2004 Charade Rd;98199;Seattle;United States of America
114;Den;Raphaely;Purchasing Manager;11000;2004-12-07;Purchasing;2004 Charade Rd;98199;Seattle;United States of America
115;Alexander;Khoo;Purchasing Clerk;3100;2005-05-18;Purchasing;2004 Charade Rd;98199;Seattle;United States of America
116;Shelli;Baida;Purchasing Clerk;2900;2007-12-24;Purchasing;2004 Charade Rd;98199;Seattle;United States of America
117;Sigal;Tobias;Purchasing Clerk;2800;2007-07-24;Purchasing;2004 Charade Rd;98199;Seattle;United States of America
118;Guy;Himuro;Purchasing Clerk;2600;2008-11-15;Purchasing;2004 Charade Rd;98199;Seattle;United States of America
119;Karen;Colmenares;Purchasing Clerk;2500;2009-08-10;Purchasing;2004 Charade Rd;98199;Seattle;United States of America
120;Matthew;Weiss;Stock Manager;8000;2006-07-18;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
121;Adam;Fripp;Stock Manager;8200;2007-04-10;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
122;Payam;Kaufling;Stock Manager;7900;2005-05-01;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
123;Shanta;Vollman;Stock Manager;6500;2007-10-10;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
124;Kevin;Mourgos;Stock Manager;5800;2009-11-16;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
125;Julia;Nayer;Stock Clerk;3200;2007-07-16;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
126;Irene;Mikkilineni;Stock Clerk;2700;2008-09-28;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
127;James;Landry;Stock Clerk;2400;2009-01-14;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
128;Steven;Markle;Stock Clerk;2200;2010-03-08;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
129;Laura;Bissot;Stock Clerk;3300;2007-08-20;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
130;Mozhe;Atkinson;Stock Clerk;2800;2007-10-30;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
131;James;Marlow;Stock Clerk;2500;2007-02-16;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
132;TJ;Olson;Stock Clerk;2100;2009-04-10;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
133;Jason;Mallin;Stock Clerk;3300;2006-06-14;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
134;Michael;Rogers;Stock Clerk;2900;2008-08-26;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
135;Ki;Gee;Stock Clerk;2400;2009-12-12;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
136;Hazel;Philtanker;Stock Clerk;2200;2011-02-06;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
137;Renske;Ladwig;Stock Clerk;3600;2005-07-14;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
138;Stephen;Stiles;Stock Clerk;3200;2007-10-26;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
139;John;Seo;Stock Clerk;2700;2008-02-12;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
140;Joshua;Patel;Stock Clerk;2500;2008-04-06;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
141;Trenna;Rajs;Stock Clerk;3500;2005-10-17;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
142;Curtis;Davies;Stock Clerk;3100;2007-01-29;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
143;Randall;Matos;Stock Clerk;2600;2008-03-15;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
144;Peter;Vargas;Stock Clerk;2500;2008-07-09;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
145;John;Russell;Sales Manager;14000;2006-10-01;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
146;Karen;Partners;Sales Manager;13500;2007-01-05;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
147;Alberto;Errazuriz;Sales Manager;12000;2007-03-10;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
148;Gerald;Cambrault;Sales Manager;11000;2009-10-15;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
149;Eleni;Zlotkey;Sales Manager;10500;2000-01-29;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
150;Peter;Tucker;Sales Representative;10000;2007-01-30;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
151;David;Bernstein;Sales Representative;9500;2007-03-24;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
152;Peter;Hall;Sales Representative;9000;2007-08-20;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
153;Christopher;Olsen;Sales Representative;8000;2008-03-30;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
154;Nanette;Cambrault;Sales Representative;7500;2008-12-09;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
155;Oliver;Tuvault;Sales Representative;7000;2009-11-23;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
156;Janette;King;Sales Representative;10000;2006-01-30;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
157;Patrick;Sully;Sales Representative;9500;2006-03-04;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
158;Allan;McEwen;Sales Representative;9000;2006-08-01;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
159;Lindsey;Smith;Sales Representative;8000;2007-03-10;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
160;Louise;Doran;Sales Representative;7500;2007-12-15;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
161;Sarath;Sewall;Sales Representative;7000;2008-11-03;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
162;Clara;Vishney;Sales Representative;10500;2007-11-11;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
163;Danielle;Greene;Sales Representative;9500;2009-03-19;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
164;Mattea;Marvins;Sales Representative;7200;2010-01-24;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
165;David;Lee;Sales Representative;6800;2000-02-23;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
166;Sundar;Ande;Sales Representative;6400;2000-03-24;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
167;Amit;Banda;Sales Representative;6200;2000-04-21;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
168;Lisa;Ozer;Sales Representative;11500;2007-03-11;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
169;Harrison;Bloom;Sales Representative;10000;2008-03-23;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
170;Tayler;Fox;Sales Representative;9600;2008-01-24;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
171;William;Smith;Sales Representative;7400;2009-02-23;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
172;Elizabeth;Bates;Sales Representative;7300;2009-03-24;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
173;Sundita;Kumar;Sales Representative;6100;2010-04-21;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
174;Ellen;Abel;Sales Representative;11000;2006-05-11;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
175;Alyssa;Hutton;Sales Representative;8800;2007-03-19;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
176;Jonathon;Taylor;Sales Representative;8600;2008-03-24;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
177;Jack;Livingston;Sales Representative;8400;2008-04-23;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
178;Kimberely;Grant;Sales Representative;7000;2009-05-24;;;;;
179;Charles;Johnson;Sales Representative;6200;2011-01-04;Sales;Magdalen Centre, The Oxford Science Park;OX9 9ZB;Oxford;United Kingdom
180;Winston;Taylor;Shipping Clerk;3200;2008-01-24;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
181;Jean;Fleaur;Shipping Clerk;3100;2008-02-23;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
182;Martha;Sullivan;Shipping Clerk;2500;2009-06-21;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
183;Girard;Geoni;Shipping Clerk;2800;2000-02-03;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
184;Nandita;Sarchand;Shipping Clerk;4200;2006-01-27;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
185;Alexis;Bull;Shipping Clerk;4100;2007-02-20;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
186;Julia;Dellinger;Shipping Clerk;3400;2008-06-24;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
187;Anthony;Cabrio;Shipping Clerk;3000;2009-02-07;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
188;Kelly;Chung;Shipping Clerk;3800;2007-06-14;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
189;Jennifer;Dilly;Shipping Clerk;3600;2007-08-13;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
190;Timothy;Gates;Shipping Clerk;2900;2008-07-11;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
191;Randall;Perkins;Shipping Clerk;2500;2009-12-19;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
192;Sarah;Bell;Shipping Clerk;4000;2006-02-04;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
193;Britney;Everett;Shipping Clerk;3900;2007-03-03;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
194;Samuel;McCain;Shipping Clerk;3200;2008-07-01;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
195;Vance;Jones;Shipping Clerk;2800;2009-03-17;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
196;Alana;Walsh;Shipping Clerk;3100;2008-04-24;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
197;Kevin;Feeney;Shipping Clerk;3000;2008-05-23;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
198;Donald;OConnell;Shipping Clerk;2600;2009-06-21;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
199;Douglas;Grant;Shipping Clerk;2600;2010-01-13;Shipping;2011 Interiors Blvd;99236;South San Francisco;United States of America
200;Jennifer;Whalen;Administration Assistant;4400;1987-09-17;Administration;2004 Charade Rd;98199;Seattle;United States of America
201;Michael;Hartstein;Marketing Manager;13000;2006-02-17;Marketing;147 Spadina Ave;M5V 2L7;Toronto;Canada
202;Pat;Fay;Marketing Representative;6000;2007-08-17;Marketing;147 Spadina Ave;M5V 2L7;Toronto;Canada
203;Susan;Mavris;Human Resources Representative;6500;2004-06-07;Human Resources;8204 Arthur St;;London;United Kingdom
204;Hermann;Baer;Public Relations Representative;10000;2004-06-07;Public Relations;Schwanthalerstr. 7031;80925;Munich;Germany
205;Shelley;Higgins;Accounting Manager;12000;2004-06-07;Accounting;2004 Charade Rd;98199;Seattle;United States of America
206;William;Gietz;Public Accountant;8300;2004-06-07;Accounting;2004 Charade Rd;98199;Seattle;United States of America
# Zapytaj o kod spółki, początkową i końcową datę
# (format dla dat: YYYYMMDD)
# *dla chętnych: gdy user nie poda daty końcowej, przyjmij datę dzisiejszą
# Gdy już pobierzesz dane:
# - zapisz do pliku csv (nazwa pliku niech zawiera kod oraz daty)
# - podziel dane na miesiące (resample) i np. oblicz średni kurs zamknięcia, ew. dodatkowe pola jak robiliśmy w Jupyterze
# - wygeneruj wykres liniowy i zapisz do pliku
# → dla chętnych dwie wersje: wykres czterech kursów (otwarcie, zamknięcie, min, max) oraz oddzielnie wstega Belingera
import pandas as pd
from datetime import date
ticker = input('Podaj symbol, np. pkn albo usdpln: ')
pocz = input('Podaj datę początkową w formacie YYYYMMDD: ')
konc = input('Podaj datę końcową w formacie YYYYMMDD: ')
# domyślny koniec: dzisiejsza data
if not konc:
konc = date.today().strftime('%Y%m%d')
# domyślny początek: 1 stycznia z tego samego roku
if not pocz:
pocz = konc[0:4] + '0101'
adres = f'https://stooq.pl/q/d/l/?s={ticker}&d1={pocz}&d2={konc}&i=d'
df = pd.read_csv(adres, index_col='Data', parse_dates=['Data'])
print(f'Pobrano dane: {len(df)} rekordów')
# nazwy kolumn: Otwarcie Najwyzszy Najnizszy Zamkniecie
print('Najniższy kurs:', df["Najnizszy"].min())
print('Najwyższy kurs:', df["Najwyzszy"].max())
print('Średni kurs zamknięcia:', df["Zamkniecie"].mean())
# Dodamy nowe kolumny
df["Zmiana"] = df["Zamkniecie"].diff()
df["Zmiana %"] = df["Zamkniecie"].pct_change() * 100
df["Średnia 5"] = df["Zamkniecie"].rolling(window=5).mean()
# To poprawiało format daty, ale jednocześnie Excel gubił informację, że ta kolumna jest typu data i stawała się zwykłym tekstem.
# df.index = df.index.strftime('%Y-%m-%d')
# Specyfikacja jak agregować w formie słownika - poniżej przekazuję to do agg
agregaty = {
'Otwarcie': ['min', 'mean', 'max'],
'Zamkniecie': ['min', 'mean', 'max'],
'Najnizszy': ['min'],
'Najwyzszy': ['max'],
}
# Wolumen agreguję tylko, jesli występuje w danych źródłowych
if 'Wolumen' in df:
agregaty['Wolumen'] = ['sum']
miesiace = df.resample('M').agg(agregaty)
plik_excel = f'kursy_{ticker}_{pocz}_{konc}.xlsx'
with pd.ExcelWriter(plik_excel) as xl_writer:
df.to_excel(excel_writer=xl_writer, sheet_name='Dane')
miesiace.to_excel(excel_writer=xl_writer, sheet_name='Miesiecznie')
print(f'Zapisano plik {plik_excel}')
wykres = df[["Otwarcie", "Zamkniecie", "Najwyzszy", "Najnizszy"]].plot(figsize=(20,10))
plik_wykres = f'kursy_{ticker}_{pocz}_{konc}.png'
wykres.get_figure().savefig(plik_wykres)
print(f'Zapisano wykres w pliku {plik_wykres}')
# Generowanie "wstęgi Boelingera"
WINDOW = 10
KORYTARZ = 2
srednia_kroczaca = df.Zamkniecie.rolling(window=WINDOW).mean()
odchylenie = df.Zamkniecie.rolling(window=WINDOW).std()
wstega_gorna = srednia_kroczaca + KORYTARZ * odchylenie
wstega_dolna = srednia_kroczaca - KORYTARZ * odchylenie
wstega = pd.DataFrame({
'Bieżące': df['Zamkniecie'],
'Trend': srednia_kroczaca,
'Górna': wstega_gorna,
'Dolna': wstega_dolna,
})
wykres = wstega.plot(figsize=(20, 10), grid=True)
wykres.fill_between(wstega.index, wstega["Górna"], wstega["Dolna"], color="#AAEEFF", alpha=0.25)
plik_bolinger = f'bolinger_{ticker}_{pocz}_{konc}.png'
wykres.get_figure().savefig(plik_bolinger)
print(f'Zapisano wstęgę Bolingera w pliku {plik_bolinger}')
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "d8a0074a",
"metadata": {},
"outputs": [],
"source": [
"import pandas"
]
},
{
"cell_type": "markdown",
"id": "a7661422",
"metadata": {},
"source": [
"Dwie najważniejsze struktury danych: `Series` i `DataFrame`.\n",
"\n",
"`Series` - seria danych tego samego typu, indeksowana za pomocą liczb od 0 (jak lista), ale opcjonalnie także za pomocą innego indeksu. Seria odpowiada pojedynczej kolumnie w Excelu lub bazie danych.\n",
"\n",
"W praktyce serii rzadko używa się samodzielnie. Najczęściej powstają one w wyniku odczytania kolumny z DataFrame lub w wyniku obliczeń."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b53feca6",
"metadata": {},
"outputs": [],
"source": [
"imiona = pandas.Series(['Ala', 'Ola', 'Jan', 'Andrzej'])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "00a0eba4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 Ala\n",
"1 Ola\n",
"2 Jan\n",
"3 Andrzej\n",
"dtype: object"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"imiona"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5e76f8e2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 20\n",
"1 30\n",
"2 40\n",
"3 50\n",
"dtype: int64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"liczby = pandas.Series(range(20, 60, 10))\n",
"liczby"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "17d4a896",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"35.0"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"liczby.mean()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "48a880e9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 1\n",
"1 3\n",
"2 5\n",
"3 7\n",
"4 9\n",
" ... \n",
"4995 9991\n",
"4996 9993\n",
"4997 9995\n",
"4998 9997\n",
"4999 9999\n",
"Length: 5000, dtype: int64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"duzo = pandas.Series(range(1, 10001, 2))\n",
"duzo"
]
},
{
"cell_type": "markdown",
"id": "5c1e7868",
"metadata": {},
"source": [
"Domyślnym indeksem dla serii są liczby całkowite od 0 (jak w Pythonowych listach).\n",
"Ale można też określić własny indeks - wtedy serii można będzie używać też jak słownika, który pod określonymi kluczami ma zapisane jakieś wartości."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "d55a6195",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PL Polska\n",
"CZ Czechy\n",
"FR Francja\n",
"DE Niemcy\n",
"UA Ukraina\n",
"RU Rosja\n",
"dtype: object"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kraje = pandas.Series(['Polska', 'Czechy', 'Francja', 'Niemcy', 'Ukraina', 'Rosja'],\n",
" index=['PL', 'CZ', 'FR', 'DE', 'UA', 'RU'])\n",
"kraje"
]
},
{
"cell_type": "markdown",
"id": "1db17181",
"metadata": {},
"source": [
"Dostęp \"słownikowy\":"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "4c4ca0e2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Niemcy'"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kraje['DE']"
]
},
{
"cell_type": "markdown",
"id": "2f6e2eab",
"metadata": {},
"source": [
"Nadal możliwy jest dostęp po numerycznym indeksie, jak w zwykłych listach:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "9c25aef5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Polska'"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kraje[0]"
]
},
{
"cell_type": "markdown",
"id": "cad1ab9f",
"metadata": {},
"source": [
"A co gdyby `index`em były liczby całkowite? To ważniejszy będzie `index`, a już nie działa odczyt wg numeru pozycji."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "618f280c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 poniedziałek\n",
"2 wtorek\n",
"3 środa\n",
"4 czwartek\n",
"5 piątek\n",
"6 sobota\n",
"7 niedziela\n",
"dtype: object"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dni_tygodnia = pandas.Series(['poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota', 'niedziela'],\n",
" index=[1, 2, 3, 4, 5, 6, 7])\n",
"dni_tygodnia"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "c7707bc0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'poniedziałek'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dni_tygodnia[1]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "3e5aad15",
"metadata": {},
"outputs": [],
"source": [
"# dni_tygodnia[0]\n",
"# KeyError"
]
},
{
"cell_type": "markdown",
"id": "6133a321",
"metadata": {},
"source": [
"`DataFrame` to jest tabela z danymi. Myślimy o niej jak o arkuszu Excela lub tabeli w bazie danych. `DataFrame` składa się z wielu kolumn-serii , które sa powiązane wspólnym indeksem.\n",
"\n",
"DataFrame można tworzyć na różne sposoby.\n",
"\n",
"Wierszowo - podajemy **listę** wierszy. Każdy wiersz jako sekwencję elementów: krotka lub lista."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "e2ac4092",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ala</td>\n",
" <td>20</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Ola</td>\n",
" <td>30</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Jan</td>\n",
" <td>40</td>\n",
" <td>m</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Andrzej</td>\n",
" <td>50</td>\n",
" <td>m</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2\n",
"0 Ala 20 k\n",
"1 Ola 30 k\n",
"2 Jan 40 m\n",
"3 Andrzej 50 m"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1 = pandas.DataFrame([('Ala', 20, 'k'),\n",
" ('Ola', 30, 'k'),\n",
" ('Jan', 40, 'm'),\n",
" ('Andrzej', 50, 'm')])\n",
"df1"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "cfe252c6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 20\n",
"1 30\n",
"2 40\n",
"3 50\n",
"Name: 1, dtype: int64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1[1]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "43dab2a0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 Ola\n",
"1 30\n",
"2 k\n",
"Name: 1, dtype: object"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.loc[1]"
]
},
{
"cell_type": "markdown",
"id": "dc4c030e",
"metadata": {},
"source": [
"Dodatkowo można podać własny indeks i nazwy kolumn."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "2f1651c1",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>imię</th>\n",
" <th>wiek</th>\n",
" <th>płeć</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>101</th>\n",
" <td>Ala</td>\n",
" <td>20</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>102</th>\n",
" <td>Ola</td>\n",
" <td>30</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>Jan</td>\n",
" <td>40</td>\n",
" <td>m</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>Andrzej</td>\n",
" <td>50</td>\n",
" <td>m</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" imię wiek płeć\n",
"101 Ala 20 k\n",
"102 Ola 30 k\n",
"103 Jan 40 m\n",
"104 Andrzej 50 m"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2 = pandas.DataFrame([['Ala', 20, 'k'],\n",
" ['Ola', 30, 'k'],\n",
" ['Jan', 40, 'm'],\n",
" ['Andrzej', 50, 'm']],\n",
" columns=['imię', 'wiek', 'płeć'],\n",
" index=[101, 102, 103, 104])\n",
"df2"
]
},
{
"cell_type": "markdown",
"id": "210e4c21",
"metadata": {},
"source": [
"Podawanie danych kolumnowo. Przekazujemy **słownik**, gdzie kluczem jest nazwa kolumny, a wartością seria danych w tej kolumnie."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "b014269e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>imie</th>\n",
" <th>wiek</th>\n",
" <th>plec</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>101</th>\n",
" <td>Ala</td>\n",
" <td>20</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>102</th>\n",
" <td>Ola</td>\n",
" <td>30</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>Jan</td>\n",
" <td>40</td>\n",
" <td>m</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>Andrzej</td>\n",
" <td>50</td>\n",
" <td>m</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" imie wiek plec\n",
"101 Ala 20 k\n",
"102 Ola 30 k\n",
"103 Jan 40 m\n",
"104 Andrzej 50 m"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df3 = pandas.DataFrame({\n",
" 'imie': ['Ala', 'Ola', 'Jan', 'Andrzej'],\n",
" 'wiek': [20, 30, 40, 50],\n",
" 'plec': ['k', 'k', 'm', 'm'],\n",
"}, index=[101, 102, 103, 104])\n",
"df3"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "1d698936",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>imie</th>\n",
" <th>wiek</th>\n",
" <th>plec</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Ala</td>\n",
" <td>20</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Ola</td>\n",
" <td>30</td>\n",
" <td>k</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Jan</td>\n",
" <td>40</td>\n",
" <td>m</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Andrzej</td>\n",
" <td>50</td>\n",
" <td>m</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" imie wiek plec\n",
"0 Ala 20 k\n",
"1 Ola 30 k\n",
"2 Jan 40 m\n",
"3 Andrzej 50 m"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lista = ['k', 'k', 'm', 'm']\n",
"df4 = pandas.DataFrame({\n",
" 'imie': imiona,\n",
" 'wiek': range(20, 60, 10),\n",
" 'plec': lista})\n",
"df4"
]
},
{
"cell_type": "markdown",
"id": "6c01a478",
"metadata": {},
"source": [
"Kolumna z `DataFrame` jest typu `Series`."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "648b89a0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 20\n",
"1 30\n",
"2 40\n",
"3 50\n",
"Name: wiek, dtype: int64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df4.wiek"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "913e271e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(df4.wiek)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fec0926d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4899,7 +4899,7 @@ ...@@ -4899,7 +4899,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.11.5" "version": "3.11.6"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -9555,7 +9555,7 @@ ...@@ -9555,7 +9555,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.11.5" "version": "3.11.6"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -12441,7 +12441,7 @@ ...@@ -12441,7 +12441,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.11.5" "version": "3.11.6"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -3924,7 +3924,7 @@ ...@@ -3924,7 +3924,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.11.5" "version": "3.11.6"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
10 11 12 13 14 15 16 17 18 19
10 9 8 7 6 5 4 3 2 1
0 0 0 0 0 0 0 0 0 0
1.1 1.25 1.44 1.75 2.0 1.66 1.5 1.33 1.2 1.0
5 4 6 3 7 2 8 1 9 0
\ No newline at end of file
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
4.4,2.9,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
5.4,3.7,1.5,0.2,Iris-setosa
4.8,3.4,1.6,0.2,Iris-setosa
4.8,3.0,1.4,0.1,Iris-setosa
4.3,3.0,1.1,0.1,Iris-setosa
5.8,4.0,1.2,0.2,Iris-setosa
5.7,4.4,1.5,0.4,Iris-setosa
5.4,3.9,1.3,0.4,Iris-setosa
5.1,3.5,1.4,0.3,Iris-setosa
5.7,3.8,1.7,0.3,Iris-setosa
5.1,3.8,1.5,0.3,Iris-setosa
5.4,3.4,1.7,0.2,Iris-setosa
5.1,3.7,1.5,0.4,Iris-setosa
4.6,3.6,1.0,0.2,Iris-setosa
5.1,3.3,1.7,0.5,Iris-setosa
4.8,3.4,1.9,0.2,Iris-setosa
5.0,3.0,1.6,0.2,Iris-setosa
5.0,3.4,1.6,0.4,Iris-setosa
5.2,3.5,1.5,0.2,Iris-setosa
5.2,3.4,1.4,0.2,Iris-setosa
4.7,3.2,1.6,0.2,Iris-setosa
4.8,3.1,1.6,0.2,Iris-setosa
5.4,3.4,1.5,0.4,Iris-setosa
5.2,4.1,1.5,0.1,Iris-setosa
5.5,4.2,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
5.0,3.2,1.2,0.2,Iris-setosa
5.5,3.5,1.3,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
4.4,3.0,1.3,0.2,Iris-setosa
5.1,3.4,1.5,0.2,Iris-setosa
5.0,3.5,1.3,0.3,Iris-setosa
4.5,2.3,1.3,0.3,Iris-setosa
4.4,3.2,1.3,0.2,Iris-setosa
5.0,3.5,1.6,0.6,Iris-setosa
5.1,3.8,1.9,0.4,Iris-setosa
4.8,3.0,1.4,0.3,Iris-setosa
5.1,3.8,1.6,0.2,Iris-setosa
4.6,3.2,1.4,0.2,Iris-setosa
5.3,3.7,1.5,0.2,Iris-setosa
5.0,3.3,1.4,0.2,Iris-setosa
7.0,3.2,4.7,1.4,Iris-versicolor
6.4,3.2,4.5,1.5,Iris-versicolor
6.9,3.1,4.9,1.5,Iris-versicolor
5.5,2.3,4.0,1.3,Iris-versicolor
6.5,2.8,4.6,1.5,Iris-versicolor
5.7,2.8,4.5,1.3,Iris-versicolor
6.3,3.3,4.7,1.6,Iris-versicolor
4.9,2.4,3.3,1.0,Iris-versicolor
6.6,2.9,4.6,1.3,Iris-versicolor
5.2,2.7,3.9,1.4,Iris-versicolor
5.0,2.0,3.5,1.0,Iris-versicolor
5.9,3.0,4.2,1.5,Iris-versicolor
6.0,2.2,4.0,1.0,Iris-versicolor
6.1,2.9,4.7,1.4,Iris-versicolor
5.6,2.9,3.6,1.3,Iris-versicolor
6.7,3.1,4.4,1.4,Iris-versicolor
5.6,3.0,4.5,1.5,Iris-versicolor
5.8,2.7,4.1,1.0,Iris-versicolor
6.2,2.2,4.5,1.5,Iris-versicolor
5.6,2.5,3.9,1.1,Iris-versicolor
5.9,3.2,4.8,1.8,Iris-versicolor
6.1,2.8,4.0,1.3,Iris-versicolor
6.3,2.5,4.9,1.5,Iris-versicolor
6.1,2.8,4.7,1.2,Iris-versicolor
6.4,2.9,4.3,1.3,Iris-versicolor
6.6,3.0,4.4,1.4,Iris-versicolor
6.8,2.8,4.8,1.4,Iris-versicolor
6.7,3.0,5.0,1.7,Iris-versicolor
6.0,2.9,4.5,1.5,Iris-versicolor
5.7,2.6,3.5,1.0,Iris-versicolor
5.5,2.4,3.8,1.1,Iris-versicolor
5.5,2.4,3.7,1.0,Iris-versicolor
5.8,2.7,3.9,1.2,Iris-versicolor
6.0,2.7,5.1,1.6,Iris-versicolor
5.4,3.0,4.5,1.5,Iris-versicolor
6.0,3.4,4.5,1.6,Iris-versicolor
6.7,3.1,4.7,1.5,Iris-versicolor
6.3,2.3,4.4,1.3,Iris-versicolor
5.6,3.0,4.1,1.3,Iris-versicolor
5.5,2.5,4.0,1.3,Iris-versicolor
5.5,2.6,4.4,1.2,Iris-versicolor
6.1,3.0,4.6,1.4,Iris-versicolor
5.8,2.6,4.0,1.2,Iris-versicolor
5.0,2.3,3.3,1.0,Iris-versicolor
5.6,2.7,4.2,1.3,Iris-versicolor
5.7,3.0,4.2,1.2,Iris-versicolor
5.7,2.9,4.2,1.3,Iris-versicolor
6.2,2.9,4.3,1.3,Iris-versicolor
5.1,2.5,3.0,1.1,Iris-versicolor
5.7,2.8,4.1,1.3,Iris-versicolor
6.3,3.3,6.0,2.5,Iris-virginica
5.8,2.7,5.1,1.9,Iris-virginica
7.1,3.0,5.9,2.1,Iris-virginica
6.3,2.9,5.6,1.8,Iris-virginica
6.5,3.0,5.8,2.2,Iris-virginica
7.6,3.0,6.6,2.1,Iris-virginica
4.9,2.5,4.5,1.7,Iris-virginica
7.3,2.9,6.3,1.8,Iris-virginica
6.7,2.5,5.8,1.8,Iris-virginica
7.2,3.6,6.1,2.5,Iris-virginica
6.5,3.2,5.1,2.0,Iris-virginica
6.4,2.7,5.3,1.9,Iris-virginica
6.8,3.0,5.5,2.1,Iris-virginica
5.7,2.5,5.0,2.0,Iris-virginica
5.8,2.8,5.1,2.4,Iris-virginica
6.4,3.2,5.3,2.3,Iris-virginica
6.5,3.0,5.5,1.8,Iris-virginica
7.7,3.8,6.7,2.2,Iris-virginica
7.7,2.6,6.9,2.3,Iris-virginica
6.0,2.2,5.0,1.5,Iris-virginica
6.9,3.2,5.7,2.3,Iris-virginica
5.6,2.8,4.9,2.0,Iris-virginica
7.7,2.8,6.7,2.0,Iris-virginica
6.3,2.7,4.9,1.8,Iris-virginica
6.7,3.3,5.7,2.1,Iris-virginica
7.2,3.2,6.0,1.8,Iris-virginica
6.2,2.8,4.8,1.8,Iris-virginica
6.1,3.0,4.9,1.8,Iris-virginica
6.4,2.8,5.6,2.1,Iris-virginica
7.2,3.0,5.8,1.6,Iris-virginica
7.4,2.8,6.1,1.9,Iris-virginica
7.9,3.8,6.4,2.0,Iris-virginica
6.4,2.8,5.6,2.2,Iris-virginica
6.3,2.8,5.1,1.5,Iris-virginica
6.1,2.6,5.6,1.4,Iris-virginica
7.7,3.0,6.1,2.3,Iris-virginica
6.3,3.4,5.6,2.4,Iris-virginica
6.4,3.1,5.5,1.8,Iris-virginica
6.0,3.0,4.8,1.8,Iris-virginica
6.9,3.1,5.4,2.1,Iris-virginica
6.7,3.1,5.6,2.4,Iris-virginica
6.9,3.1,5.1,2.3,Iris-virginica
5.8,2.7,5.1,1.9,Iris-virginica
6.8,3.2,5.9,2.3,Iris-virginica
6.7,3.3,5.7,2.5,Iris-virginica
6.7,3.0,5.2,2.3,Iris-virginica
6.3,2.5,5.0,1.9,Iris-virginica
6.5,3.0,5.2,2.0,Iris-virginica
6.2,3.4,5.4,2.3,Iris-virginica
5.9,3.0,5.1,1.8,Iris-virginica
4.850000000000000000e+01 5.350000000000000000e+01 5.850000000000000000e+01 6.350000000000000000e+01 6.850000000000000000e+01 7.350000000000000000e+01 7.850000000000000000e+01 8.350000000000000000e+01 8.850000000000000000e+01 9.350000000000000000e+01
4.850000000000000000e+01 4.350000000000000000e+01 3.850000000000000000e+01 3.350000000000000000e+01 2.850000000000000000e+01 2.350000000000000000e+01 1.850000000000000000e+01 1.350000000000000000e+01 8.500000000000000000e+00 3.500000000000000000e+00
-1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00 -1.500000000000000000e+00
4.000000000000000000e+00 4.750000000000000000e+00 5.699999999999999289e+00 7.250000000000000000e+00 8.500000000000000000e+00 6.799999999999998934e+00 6.000000000000000000e+00 5.150000000000000355e+00 4.500000000000000000e+00 3.500000000000000000e+00
2.350000000000000000e+01 1.850000000000000000e+01 2.850000000000000000e+01 1.350000000000000000e+01 3.350000000000000000e+01 8.500000000000000000e+00 3.850000000000000000e+01 3.500000000000000000e+00 4.350000000000000000e+01 -1.500000000000000000e+00
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment