הדמיית נתונים עם Pandas PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הדמיית נתונים עם פנדות

Pandas סייעה לנו עד כה בשלב של עיבוד מוקדם של נתונים. למרות שבמקרה אחד, בזמן יצירת היסטוגרמות, השתמשנו גם במודול אחר מ-Pandas - plotting.

נמנענו בכוונה מכאן עד כה, כי הצגתו מוקדם יותר תעלה יותר שאלות ממה שהוא ענה. כלומר, פנדות ו Matplotlib היו צמד שכיח כל כך בכל מקום, עד ש-Pandas החלה לשלב את הפונקציונליות של Matplotlib. זה בִּכְבֵדוּת מסתמך על Matplotlib כדי לבצע כל תכנון ממשי, ותמצא פונקציות רבות של Matplotlib עטופות בקוד המקור. לחלופין, אתה יכול להשתמש ב-backends אחרים לצורך תכנון, כגון בעלילה ו bokeh.

עם זאת, Pandas גם מציג לנו כמה עלילות כי הם לא חלק מסוגי העלילה הסטנדרטיים של Matplotlib, כגון KDEs, אנדרוז עקומות, עלילות Bootstrap ו פיזור מטריצות.

השמיים plot() פונקציה של פנדה DataFrame משתמש בקצה האחורי שצוין על ידי plotting.backend, ובהתאם ל- kind ארגומנט - יוצר עלילה באמצעות הספרייה הנתונה. מכיוון שהרבה מאלה חופפים - אין טעם לכסות סוגי עלילה כמו line, bar, hist ו scatter. הם ייצרו כמעט את אותן עלילות עם אותו קוד כפי שעשינו עד כה עם Matplotlib.

נסקור רק בקצרה את plot() תפקוד מאז המנגנון הבסיסי נחקר עד כה. במקום זאת, בואו נתמקד בחלק מהעלילות שאנו לא יכול כבר לעשות בקלות עם Matplotlib.

זה יהיה פרק קצר מאוד, מכיוון שיכולות ההזימה וההדמיה של פנדס מחווירות בהשוואה ל-Matplotlib - אבל עדיין כדאי לדעת על כמה מהן, כמו גם להיות מודע ליכולת לתכנן מ-Matplotlib. DataFrameישירות.

השמיים DataFrame.plot() פונקציה

השמיים plot() הפונקציה מקבלת x ו y תכונות, וכן א kind טַעֲנָה. לחלופין, כדי למנוע את kind טיעון, אתה יכול גם להתקשר DataFrame.plot.kind() במקום, ועובר ב x ו y תכונות.

הערכים המקובלים עבור kind הטיעונים הם: line, bar, barh (פס אופקי), hist, box, kde, density (מילה נרדפת ל kde), area, pie, scatter ו hexbin (בדומה ל-Heatmap).

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()

במקום לספק את Series מופעים כמו שאנחנו עושים עבור Matplotlib - זה מספיק כדי לספק את שמות העמודות, ומאז שאתה מתקשר ל plot() פונקציה ב- DataFrame אתה מדמיין, קל לפנדות למפות את ערכי המחרוזות האלה לשמות העמודות המתאימים.

כל אחת מהשיחות הללו עושה שיחה חדשה Figure מופע ומשרטט עליו את הערכים המתאימים:

הדמיית נתונים עם Pandas PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לצייר מספר צירים על אותו הדבר Figure, אתה יכול לעשות א Figure ואחד או יותר Axes באמצעות plt.subplots() ולהקצות את המתאים Axes אל ה ax טיעון של כל אחד plot.plot_type() להתקשר:

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()

חלק מהטיעונים הסטנדרטיים, כגון rotation הטיעון למעשה שונה ב plot() שיחות. לדוגמה, rotation מתקצר ל rot. זה עושה את זה קצת מסובך פשוט להחליף בין Matplotlib ל-Pandas, מכיוון שסביר להניח שתגיעו לדפי התיעוד, רק תבדקו אילו טיעונים ניתן להחיל ואילו לא.

עכשיו, במקום ליצור חדש Figure or Axes למשל, כל אחת מהחלקות הללו תוצב במקום המתאים Axes מקרים שסיפקנו להם:

הדמיית נתונים עם Pandas PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

באופן כללי, תכנון עם Pandas הוא נוח ומהיר - אבל למרות זאת, עבור תכנון בר עלילות, קווי עלילות ו-Box Plot, סביר להניח שתרצה ללכת עם Matplotlib. זה גם המנוע הבסיסי שבו Pandas משתמשת בהכרח, וגם יש לו יותר אפשרויות התאמה אישית, ולא תצטרך לזכור סט חדש של טיעונים שתוכל להשתמש בהם עם עלילות Pandas.

עם זאת, עבור חלק מהעלילות, אולי תרצה להעדיף פנדות, מכיוון שהם יצטרכו להיעשות באופן ידני ב-Matplotlib, וחלקם הם כל כך טרחה לעשות שזה לא שווה את המאמץ, כגון שורות KDE.

פנדות' הִתנַכְּלוּת מודול

מה DataFrameשיש לה להציע מבחינת ויזואליזציה אינה חדשה מדי עבורנו. עם זאת, המודול הבסיסי שהם מכנים, pandas.plotting עושה. ה plotting למודול יש מספר פונקציות שאנו יכולים להשתמש בהן, כגון autocorrelation_plot(), bootstrap_plot(), ו scatter_matrix().

כל אחד מאלה מקבל או א Series או DataFrame, בהתאם לסוג ההדמיה שהם מייצרים, כמו גם פרמטרים מסוימים למטרות תכנון מפרט וסגנון.

עלילת Bootstrap

הפעלת אתחול הוא תהליך של דגימה אקראית (עם החלפה) של מערך נתונים, וחישוב מדדי דיוק כגון הטיה, שונות ו רווחי סמך עבור הדגימות האקראיות. "עם החלפה", במונחים מעשיים, אומר שניתן לבחור שוב כל רכיב שנבחר באקראי. ללא תחליף פירושו שלאחר כל רכיב שנבחר באקראי, הוא מוסר מהמאגר עבור המדגם הבא.

A עלילת Bootstrap, שנוצר על ידי Pandas אתחול הסטטיסטיקה הממוצעת, החציונית והבינונית של מערך נתונים, בהתבסס על המדגם size, ולאחר מכן העלילה מוצגת באמצעות plt.show(). ארגומנטי ברירת המחדל עבור size ו samples יש לו 50 ו 500 בהתאמה.

זה אומר שלפיצ'ר אנו דוגמים 50 ערכים. לאחר מכן, נוצרת תת-דגימה של 50 אלמנטים (נתונים סינתטיים) עבור אותם 50 ערכים ומחושב עבורם נתון סיכום (ממוצע/חציון/בינוני). תהליך זה חוזר על עצמו 500 פעמים, אז בסופו של דבר, יש לנו 500 סטטיסטיקות סיכום:

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()

הדמיית נתונים עם Pandas PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

עלילת קורלציה אוטומטית

עלילות אוטוקורלציה משמשים לבדיקת אקראיות נתונים, עבור נתונים מסדרות זמן. מרובות אוטוקורלציות מחושבים עבור חותמות זמן שונות, ואם הנתונים הם באמת אקראיים - המתאם יהיה קרוב לאפס. אם לא - המתאם יהיה גדול מאפס.

בואו נתווה שתי עלילות אוטוקורלציה - אחת עם שלנו ערך תכונה, ואחד עם א Series מלא בערכים אקראיים:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()

עלילת המתאם האוטומטי עבור random_series צריך להסתובב סביב 0, מכיוון שמדובר בנתונים אקראיים, בעוד העלילה עבור Value תכונה לא:

הדמיית נתונים עם Pandas PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

ראוי לציין ש-Autocorrelation מודד אחד טופס של אקראיות, כבלתי מתאם, אבל נתונים לא אקראיים אכן קיימים. אם זה לא אקראי, אבל אין לו מתאמים משמעותיים - עלילת הקורלציה האוטומטית תציין שהנתונים הם אקראיים.

פיזור מטריצות

פיזור מטריצות עלילה א רשת של עלילות פיזור עבור כל התכונות מול כל התכונות. מכיוון שזה בהכרח משווה כל תכונה עם עצמה, גם - ה אלכסוני שבו זה קורה מוחלף בדרך כלל ב-a היסטוגרמה של תכונה זו, במקום עלילת פיזור. פיזור מטריצות ידועים גם כ זוג עלילות, וסיבורן מציעה א pairplot() לתפקד רק בשביל זה.

השמיים scatter_matrix() הפונקציה מקבלת א DataFrame ומפיקה מטריצת פיזור עבור כל התכונות המספריות שלה, ומחזירה מערך דו מימדי של Axes מופעים המרכיבים את מטריצת הפיזור. כדי לצבוט משהו לגביהם, תרצה לחזור עליהם:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()

זה גורם למטריצת פיזור גדולה למדי של כל התכונות מול כל התכונות האחרות:

הדמיית נתונים עם Pandas PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אתה יכול גם לעבור ב diagonal טיעון, שמקבל 'hist' or 'kde' כדי לציין איזה סוג של חלקת הפצה תרצה לצייר באלכסון, כמו גם alpha, ציון השקיפות של הסמנים ב-Catter Plots.

בול זמן:

עוד מ Stackabuse