Před použitím kontingenční tabulky panda se ujistěte, že rozumíte svým datům a otázkám, které se snažíte vyřešit prostřednictvím kontingenční tabulky. Pomocí této metody můžete dosáhnout skvělých výsledků. V tomto článku rozvedeme, jak vytvořit kontingenční tabulku v Pandas Pythonu.
Čtení dat ze souboru aplikace Excel
Stáhli jsme si excelovou databázi prodeje potravin. Před zahájením implementace je třeba nainstalovat několik nezbytných balíčků pro čtení a zápis souborů databáze aplikace Excel. Zadejte následující příkaz do terminální části editoru pycharm:
pip install xlwt openpyxl xlsxwriter xlrd
Nyní si přečtěte data z listu aplikace Excel. Importujte požadované knihovny pandy a změňte cestu k vaší databázi. Potom spuštěním následujícího kódu lze data načíst ze souboru.
importovat pandy jako pdimportovat numpy jako np
dtfrm = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
tisk (dtfrm)
Zde se data čtou z databáze Excel Excel pro prodej potravin a předávají se do proměnné datového rámce.
Vytvořte kontingenční tabulku pomocí Pandas Python
Níže jsme vytvořili jednoduchou kontingenční tabulku pomocí databáze prodeje potravin. K vytvoření kontingenční tabulky jsou vyžadovány dva parametry. Prvním z nich jsou data, která jsme předali do datového rámce, a druhým je index.
Pivotní data v indexu
Index je funkce kontingenční tabulky, která umožňuje seskupit data podle požadavků. Zde jsme vzali 'Produkt' jako index k vytvoření základní kontingenční tabulky.
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
pivot_tble = pd.pivot_table (dataframe, index = ["Produkt"])
tisk (kontingenční_tabulka)
Následující výsledek se zobrazí po spuštění výše uvedeného zdrojového kódu:
Výslovně definujte sloupce
Pro další analýzu dat explicitně definujte názvy sloupců s indexem. Například chceme ve výsledku zobrazit jedinou UnitPrice každého produktu. Za tímto účelem přidejte parametr hodnot do kontingenční tabulky. Následující kód vám dává stejný výsledek:
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
pivot_tble = pd.pivot_table (dataframe, index = 'Product', values = 'UnitPrice')
tisk (kontingenční_tabulka)
Otočte data pomocí více indexů
Data lze seskupit na základě více než jedné funkce jako index. Pomocí přístupu založeného na více indexech můžete získat konkrétnější výsledky pro analýzu dat. Například výrobky spadají do různých kategorií. Můžete tedy zobrazit index „Produkt“ a „Kategorie“ s dostupnými „Množstvím“ a „Jednotkovou cenou“ každého produktu následujícím způsobem:
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
pivot_tble = pd.pivot_table (dataframe, index = ["kategorie", "produkt"], hodnoty = ["jednotková cena", "množství"])
tisk (kontingenční_tabulka)
Použití agregační funkce v kontingenční tabulce
V kontingenční tabulce lze aggfunc použít pro různé hodnoty prvků. Výsledná tabulka je souhrn dat funkcí. Funkce agregace se vztahuje na data vaší skupiny v kontingenční tabulce. Ve výchozím nastavení je agregační funkce np.znamenat(). Ale na základě požadavků uživatele lze pro různé datové funkce použít různé agregační funkce.
Příklad:
V tomto příkladu jsme použili agregační funkce. Np.funkce sum () se používá pro funkci 'Množství' a np.funkce mean () pro funkci 'UnitPrice'.
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
pivot_tble = pd.pivot_table (dataframe, index = ["kategorie", "produkt"], aggfunc = 'množství': np.součet, 'UnitPrice': np.znamenat)
tisk (kontingenční_tabulka)
Po použití agregační funkce pro různé funkce získáte následující výstup:
Pomocí parametru hodnoty můžete také použít agregační funkci pro konkrétní funkci. Pokud nezadáte hodnotu funkce, agreguje číselné funkce vaší databáze. Podle následujícího zdrojového kódu můžete použít agregační funkci pro konkrétní funkci:
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
pivot_tble = pd.pivot_table (dataframe, index = ['Product'], values = ['UnitPrice'], aggfunc = np.znamenat)
tisk (kontingenční_tabulka)
Odlišné mezi hodnotami vs. Sloupce v kontingenční tabulce
Hodnoty a sloupce jsou hlavním matoucím bodem v kontingenční tabulce. Je důležité si uvědomit, že sloupce jsou volitelná pole, zobrazující hodnoty výsledné tabulky vodorovně nahoře. Agregační funkce aggfunc se vztahuje na pole hodnot, které vypisujete.
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
pivot_tble = pd.pivot_table (dataframe, index = ['Category', 'Product', 'City'], values = ['UnitPrice', 'Quantity'],
columns = ['Region'], aggfunc = [np.součet])
tisk (kontingenční_tabulka)
Zpracování chybějících dat v kontingenční tabulce
Chybějící hodnoty v kontingenční tabulce můžete také zpracovat pomocí 'fill_value' Parametr. To vám umožní nahradit hodnoty NaN nějakou novou hodnotou, kterou zadáte k vyplnění.
Například jsme odstranili všechny hodnoty null z výše uvedené výsledné tabulky spuštěním následujícího kódu a nahradíme hodnoty NaN 0 v celé výsledné tabulce.
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ')
pivot_tble = pd.pivot_table (dataframe, index = ['Category', 'Product', 'City'], values = ['UnitPrice', 'Quantity'],
columns = ['Region'], aggfunc = [np.součet], fill_value = 0)
tisk (kontingenční_tabulka)
Filtrování v kontingenční tabulce
Jakmile je výsledek vygenerován, můžete použít filtr pomocí standardní funkce datového rámce. Vezměme si příklad. Filtrujte ty produkty, jejichž UnitPrice je nižší než 60. Zobrazuje produkty, jejichž cena je nižší než 60.
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ', index_col = 0)
pivot_tble = pd.pivot_table (dataframe, index = 'Product', values = 'UnitPrice', aggfunc = 'sum')
low_price = pivot_tble [pivot_tble ['UnitPrice'] < 60]
tisk (nízká cena)
Pomocí jiné metody dotazu můžete filtrovat výsledky. Například Například jsme filtrovali kategorii cookies na základě následujících funkcí:
importovat pandy jako pdimportovat numpy jako np
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ', index_col = 0)
pivot_tble = pd.pivot_table (dataframe, index = ["Kategorie", "Město", "Region"], hodnoty = ["UnitPrice", "Množství"], aggfunc = np.součet)
pt = kontingenční tabulka.dotaz ('Kategorie == ["Cookies"]') '
tisk (pt)
Výstup:
Vizualizujte data kontingenční tabulky
Chcete-li vizualizovat data kontingenční tabulky, postupujte následujícím způsobem:
importovat pandy jako pdimportovat numpy jako np
import matplotlib.pyplot jako plt
dataframe = pd.read_excel ('C: / Users / DELL / Desktop / foodsalesdata.xlsx ', index_col = 0)
pivot_tble = pd.pivot_table (dataframe, index = ["kategorie", "produkt"], hodnoty = ["jednotková cena"])
kontingenční tabulka.plot (druh = 'bar');
plt.ukázat()
Ve výše uvedené vizualizaci jsme spolu s kategoriemi ukázali jednotkovou cenu různých produktů.
Závěr
Zkoumali jsme, jak můžete vygenerovat kontingenční tabulku z datového rámce pomocí Pandas python. Kontingenční tabulka umožňuje generovat hluboké poznatky o vašich datových sadách. Viděli jsme, jak vygenerovat jednoduchou kontingenční tabulku pomocí více indexů a aplikovat filtry na kontingenční tabulky. Kromě toho jsme také ukázali vykreslení dat kontingenční tabulky a doplnění chybějících dat.