מאמר זה פורסם כחלק מה- בלוגאת מדע הנתונים
מבוא
ובכן, יש אפשרות טובה שאתה יכול!
עבור מדעני נתונים המשתמשים ב- Python כשפת התכנות העיקרית שלהם, חבילת Pandas היא כלי חובה לניתוח נתונים. חבילת Pandas מכילה את כל מה שמדען נתונים צריך, וכל קורס לימד אותנו כיצד להשתמש בה בהתחלה. הוא כל כך גדול, חזק ומבצע כמעט כל מניפולציה טבלאית שאתה יכול לדמיין. עם זאת, רוחב זה יכול להיות חסרון לפעמים.
יש לו הרבה תכונות יפות הפותרות מקרי נדיר נדירים, תרחישים שונים.
אחד החסרונות העיקריים של הפנדה הוא שהיא נאבקת במערכות נתונים גדולות מכיוון שהפנדות מאחסנות את מבני הנתונים שלהן בזיכרון RAM, מה שעלול להיעשות לא מספיק ככל שיגדלו הנתונים. השתמש ב- PySpark או ב- Dask לשם כך.
למרות שחבילת פנדה נמצאת בשימוש נרחב, עדיין ישנן פונקציות רבות שאנשים עשויים להתעלם ממנה, בין אם משום שהיא משמשת פחות ובין אם הן אינן מודעות לקיומה. פוסט זה מתכוון להכניס אותך מחדש לתכונות אלה ולהדגים כי פנדות מוכשרות בהרבה מכפי שהיית מודע קודם לכן.
צינור
כדי לבצע ניקוי נתונים בצורה תמציתית וקומפקטית בפנדות, אפשר להשתמש בפונקציות צינור, המאפשרות לשלב פונקציות מרובות בפעולה אחת.
לדוגמה, אם אתה אוהב ליישם פונקציות כגון drop_duplicates, coding_categoricals, remove_outliers המקבלים את הטיעונים שלו.
df_cleaned = (diamonds.pipe (drop_duplicates). pipe (remove_outliers, ['price', 'carat', 'depth']). pipe (encod_categoricals, ['cut', 'color', 'clarity']))
פקטור
פונקציה זו היא חלופה למקודד תוויות של Sklearns.
# שימו לב ל [0] בקצה היהלומים ["cut_enc"] = pd.factorize (יהלומים ["חתך"]) [0] >>> יהלומים ["cut_enc"]. מדגם (5) 52103 2 39813 0 31843 0 10675 0 6634 0 שם: cut_enc, dtype: int64
פקטור התוצאות כפל ערכים: הערך המקודד ורשימת קטגוריות ייחודיות.
ערכים, ייחודי = pd.factorize (יהלומים ["חתך"], מיין = נכון) >>> מערך [: 10] מערך ([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype = int64) >>> ייחודי ['אידיאלי', 'פרימיום', 'טוב מאוד', 'טוב', 'הוגן']
להתפוצץ
תמונה על ידי אדווה פוסטר on Unsplash
התפוצצות היא פונקציה עם שם מעניין. נתחיל עם דוגמה ולאחר מכן הסבר:
df = pd.Series ([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]). to_frame ("מלוכלך") >>> df
בעמודת התכונה יש שתי שורות המסומנות ברשימות. סוג זה של נתונים זמין בסקרים בהם מספר שאלות מקבלות אפשרויות רבות.
>>> df.explode ("מלוכלך", ignore_index = נכון)
פונקציה זו לוקחת תא עם מערך ערכים ומתפוצצת במספר שורות. כדי לשמור על סדר האינדקס המספרי, השתמש ב- ignore_index כ- True.
בין
להוספת אינדקס בוליאני של תכונות מספריות בטווח, הנה פונקציה שימושית:
# קבל יהלומים שמתומחרים בין 3500 ל 3700 דולר יהלומים [יהלומים ["מחיר"]. בין (3500, 3700, כולל = "אף אחד")]. מדגם (5)
T
ל- DataFrame יש תכונת T פשוטה, הידועה בשם transpose. ייתכן שלא נשתמש בה לעתים קרובות, תיאור השיטה מועילה בעת צפייה במסגרות הנתונים.
>>> boston.describe (). T.head (10)
אפשרויות פנדה
אפשר להשתמש בהגדרות גלובליות של פנדות שעוזרות לצבוט ולשנות את התנהגויות ברירת המחדל.
>>> dir (pd.options) ['מחשוב', 'תצוגה', 'io', 'מצב', 'תכנון']
הוא מורכב מ -5 מודולים. בואו לראות אפשרויות זמינות מתחת לתצוגה. יש הרבה אפשרויות זמינות, אבל אני משתמש בעיקר ב- max_columns.
>>> dir (pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precision', 'show_dimensions', 'unicode' , 'רוחב']
רוב האנשים משתמשים ב- max_colum ודיוק
# הסר את הגבול להצגת מספר העמודות pd.options.display.max_columns = None # הצג 5 מספרים בלבד לאחר שה- pd.options.display.precision = 5 # נפטר מהסימון המדעי
Convert_dtypes
כולנו מודעים לכך שלפנדות יש הרגל מעצבן לסמן כמה עמודות כסוגי נתוני אובייקטים. במקום להגדיר את סוגיהם ישירות, תוכל להשתמש בשיטת convert dtypes, המנסה לגזור את סוג הנתונים הטוב ביותר:
sample = pd.read_csv ("data/station_day.csv", usecols = ["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes StationId object CO float64 O3 float64 AQI_Bucket אובייקט dtype: object >>> sample.convert_dtypes (). dtypes StationId string CO float64 O3 float64 AQI_Bucket string dtype: object
Select_dtypes
מהשם, אני מאמין שברור מה הפונקציה עושה. תוכל להשתמש באפשרויות הכללה וההכללה כדי לציין עמודות הכוללות או השמטת סוגי נתונים ספציפיים.
בחר עמודות מספריות בלבד עם מספר מס 'np, למשל:
# בחר רק עמודות מספריות יהלומים. Select_dtypes (כולל = מספר מספר) .head ()
מסכה
פונקציה זו מסייעת להחליף ערכים שבהם התנאי המותאם אישית אינו מתקיים.
# צור גילאים לדוגמה לדוגמא = pd.Series ([55, 52, 50, 66, 57, 59, 49, 60]). To_frame ("ages") גילאים
לאחר ביצוע הפעולה הנ"ל.
מינימום ומקסימום
למרות ש- min ו- max ידועים היטב, יש לו כמה תכונות טובות יותר עבור כמה מקרי קצה.
index = ["יהלומים", "טיטאניק", "איריס", "מחלות לב", "ברירת מחדל להלוואה"] ספריות = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"] df = pd.DataFrame ({lib: np.random.uniform (90, 100, 5) עבור lib בספריות}, index = index) >>> df
הנתונים הדמיוניים לעיל מציגים את התוצאות של ארבע ספריות מגבירות שיפוע על חמישה מערכות נתונים. אנו מחפשים את החבילה שעשתה את הטוב ביותר בכל מערך נתונים. כך תוכל להשיג זאת בצורה מקסימלית בצורה קלאסית:
>>> df.max (ציר = 1) יהלומים 99.52684 טיטניק 99.63650 איריס 99.10989 מחלת לב 99.31627 ברירת מחדל להלוואה 97.96728 dtype: float64
הכי גדול והכי קטן
המספר הגדול ביותר והקטן ביותר עוזר להציג את ערכי N או ~ (N העליונים) העליונים של משתנה.
diamonds.nlargest (5, "מחיר")
יהלומים. הכי קטן (5, "מחיר")
Idxmax ו- Idxmin
פנדות מחזירות את המספר הגדול/הקטן ביותר כאשר אתה מתקשר למקסימום או לדקה בעמודה. עם זאת, ישנם מצבים שבהם אתה צריך את המיקום של min/max, אשר פונקציות אלה אינן מספקות.
במקום זאת, תוכל להשתמש ב- idxmax/idxmin:
>>> diamonds.price.idxmax () 27749 >>> diamonds.carat.idxmin () 14
ספירות_ערך
דרך נפוצה למצוא את אחוז הערכים החסרים היא שילוב של isnull ו- sum ומחלקים אותו לפי גודל המערך.
אבל, value_counts עם ארגומנטים רלוונטיים עושה את אותו הדבר:
דיור = pd.read_csv ("train.csv") >>> דיור ["FireplaceQu"]. value_counts (dropna = False, normalize = True) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Ex 0.01644 Po 0.01370 שם: FireplaceQu, dtype: float64
לגזור
פונקציית הקליפ עוזרת לאתר חריגים מחוץ לטווח ולהחליף אותם במגבלות קשות.
>>> ages.clip (50, 60)
בזמן_שעה ובבטווין_שעה
פונקציות אלה מועילות בעת עבודה עם סדרות זמן של פירוט גבוה.
at_time עוזר להשיג ערכים בתאריך או שעה מסוימים.
index = pd.date_range ("2021-08-01", תקופות = 100, freq = "H") df = pd.DataFrame ({"col": list (range (100))}, index = index) >> > df.head ()
>>> df.at_time ("15:00")
בין_זמן משמש לשליפת שורות בטווח מותאם אישית.
מאת datetime לייבא datetime >>> df.between_time ("09:45", "12:00")
תאריך תאריך
פונקציה זו מסייעת ביצירת מדדי סדרות זמן בתדירות ימי עסקים. לעולם הפיננסי יש תדר מסוג זה. לכן, פונקציה זו עשויה להיות מועילה בזמן איחוד סדרות זמן עם פונקציית אינדקס.
series = pd.bdate_range ("2021-01-01", "2021-01-31") # תקופה של חודש >>> len (סדרה) 21
ב ואית
שני הגישות הללו מהירים בהרבה מ- loc ו- iloc. עם זאת, יש להם חסרון. הם מאפשרים לך רק לבחור או להחליף ערך אחד בכל פעם:
# [אינדקס, תווית] >>> diamonds.at [234, "לחתוך"] 'אידיאלי' # [אינדקס, אינדקס] >>> diamonds.iat [1564, 4] 61.2 # החלף שורה 16541 של עמודת המחיר >> > diamonds.at [16541, "מחיר"] = 10000
ארגסורט
פונקציה זו מסייעת לחלץ מדדים שימיינו מערך של התכונות.
tips.reset_index (inplace = True, drop = True) sort_idx = tips ["total_bill"]. argsort (kind = "mergesort") # כעת, מיין 'טיפים' בהתבסס על total_bill tips.iloc [sort_idx] .head ()
אביזר לחתולים
הפנדות מאפשרות פונקציות מובנות של פייתון בתאריכים ומחרוזות באמצעות אביזרים כמו str או dt.
>>> diamonds.dtypes carat float64 קטגוריית חתך צבע קטגוריית בהירות קטגוריית עומק float64 שולחן float64 מחיר int64 x float64 y float64 z float64 cut_enc int64 dtype: object
אפשר להשתמש בפונקציות מיוחדות רבות באמצעות אביזר חתולים בעמודות קטגוריות. יש לו פונקציות כגון קטגוריות כדי למצוא ייחודי, שם_קטגוריות לשינוי שם התכונות.
יהלומים ["new_cuts"] = יהלומים ["cut"]. cat.rename_categories (רשימה ("ABCDE")) >>> יהלומים ["new_cuts"]. cat.categories Index (['A', 'B', ' C ',' D ',' E '], dtype =' object ')
בדוק זאת לקבלת רשימה נוספת של פונקציות תחת אביזר לחתול.
לסחוט
סחיטה היא פונקציה המשמשת בנסיבות קצה נדירות אך מחמירות.
כאשר ערך יחיד מוחזר מתנאי המשמש לקביעת משנה של DataFrame, זהו אחד המקרים הללו. שקול את התרחיש הבא:
קבוצת משנה = diamonds.loc [diamonds.index >> תת -קבוצה
גם אם יש רק תא אחד, החזר את DataFrame. זה לא נוח מכיוון שעכשיו עליך להשתמש ב- .loc עם שם העמודה וגם האינדקס כדי לקבל את המחיר.
אתה לא חייב אם אתה יודע לסחוט. ניתן להסיר ציר מתא חד-תא או מסדרה באמצעות תא זה באמצעות פונקציה זו. שקול את התרחיש הבא:
>>> subset.squeeze () 326
אפשר לציין את הציר להסרה. זה רק החזיר סקלר עכשיו.
>>> subset.squeeze ("עמודות") # או "שורות" 0 326 שם: מחיר, dtype: int64
שים לב שפונקציה זו פועלת רק עבור Series או DataFrame עם ערכים בודדים.
Excel_writer
זוהי מחלקה כללית ליצירת קבצי אקסל ולכתיבת תוכנת DataFrame בה. שקול, יש לנו את שני מערכי הנתונים האלה.
# טען שני מערכות נתונים יהלומים = sns.load_dataset ("יהלומים") טיפים = sns.load_dataset ("עצות") # כתוב לאותו קובץ אקסל עם pd.ExcelWriter ("data/data.xlsx") ככותב: diamonds.to_excel (כותב, sheet_name = "יהלומים") tips.to_excel (כותב, sheet_name = "עצות")
יש לו מאפיינים לציון פורמט DateTime לשימוש, בין אם אתה זקוק לקובץ חדש או לשנות קובץ קיים, מה יקרה אם קיים גיליון. בדוק את זה תיעוד לקבלת פרטים נוספים.
סיכום
זו אינה סקירה ממצה של פנדות, ו תיעוד מכיל מידע נוסף על הקוד והתכונות. אני ממליץ לך להתנסות עם וריאציות שונות של קטעי הקוד המופיעים כאן, כמו גם פרמטרים שונים. אפשר להבין לגמרי את העוצמה של פנדות על ידי כך.
ספריות כמו Dask ו- datatable עוקפות בהדרגה את פנדות עם התכונות החדשות והנוצצות שלהן לטיפול במערכות נתונים גדולות, פנדה נשארת הכלי הנפוץ ביותר לשימוש במניעת נתונים בקהילת מדעי הנתונים של פייתון. בגלל עד כמה היא משתלבת בערימת SciPy הנוכחית, הספרייה משמשת כפרדיגמה של חבילות אחרות לעקוב ולבנות.
אני מקווה שמצאת את הפוסט הזה מרתק ותודה שקראת.
אמצעי התקשורת המוצגים במאמר זה אינם בבעלות Analytics Vidhya ומשמשים את שיקול הדעת של המחבר.
מוצרים מקושרים
- "
- 100
- 7
- תעשיות
- אנליזה
- ניתוח
- טיעונים
- מאמר
- הטוב ביותר
- חיזוק
- בוסטון
- לִבנוֹת
- שיחה
- מקרים
- שינוי
- ניקוי
- קוד
- טור
- Common
- קהילה
- לחשב
- יוצרים
- נתונים
- ניתוח נתונים
- מדע נתונים
- מדען נתונים
- תאריכים
- DID
- מַחֲלָה
- דולר
- אדג '
- Excel
- לְנַסוֹת
- הוגן
- מאפיין
- תכונות
- כספי
- ראשון
- לעקוב
- פוּרמָט
- פונקציה
- גלוֹבָּלִי
- טוב
- לגדול
- טיפול
- שימושי
- כאן
- גָבוֹהַ
- איך
- איך
- HTTPS
- מדד
- מידע
- IT
- מפתח
- שפה
- גָדוֹל
- למידה
- סִפְרִיָה
- רשימה
- רשימות
- לִטעוֹן
- להלוות
- למידת מכונה
- מניפולציה
- מסכה
- מדיה
- תכונות חדשות
- מספרים
- אפשרויות
- אחר
- פרדיגמה
- אֲנָשִׁים
- מקטרת
- כּוֹחַ
- דיוק
- פּרֶמיָה
- להציג
- מחיר
- תכנות
- פיתון
- RAM
- רכס
- קריאה
- תוצאות
- מדע
- מדענים
- סדרה
- פָּשׁוּט
- מידה
- So
- לפתור
- התחלה
- חנויות
- זמן
- טיפים
- חלק עליון
- Unicode
- us
- ערך
- לצפיה
- מי
- בתוך
- עובד
- עוֹלָם
- סופר
- כתיבה
- X