כיצד לשלב קבצי CSV ב- Python

Kyzd Lslb Qbzy Csv B Python



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

למה לשלב קבצי CSV?

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







כיצד לשלב קבצי CSV ב- Python?

ישנן מספר דרכים ושיטות לשילוב שני קבצי CSV או יותר ב-Python. בסעיף למטה, נשתמש בפונקציות append(), concat(), ו-merge() וכו', לשילוב קבצי CSV לתוך מסגרת נתונים של pandas ואז מסגרות נתונים יומרו לקובץ CSV בודד. נלמד כיצד לשלב מספר קבצי CSV עם מבנה עמודות דומה או משתנה.



שיטה מס' 1: שילוב CSV עם מבנים או עמודות דומות

ספריית העבודה הנוכחית שלנו כוללת שני קבצי CSV, 'test1' ו-'test2'.



דוגמה מס' 1: שימוש בפונקציה append()

שני קובצי ה-CSV הם מאותו מבנה. הפונקציה glob() תשמש בשיטה זו רק כדי לרשום את קבצי ה-CSV בספריית העבודה. לאחר מכן נשתמש ב-'pandas.DataFrame.append()' כדי לקרוא את קבצי ה-CSV שלנו (עם מבנה טבלה משותף).





תְפוּקָה:



באמצעות הפונקציה append, הוספנו או הוספנו כל שורת נתונים מ-test2.csv מתחת לשורות הנתונים של test1.csv, מכיוון שניתן לראות שכל שורות הנתונים של הקובץ שולבו. כדי להמיר מסגרת נתונים זו ל-CSV, אנו יכולים להשתמש בפונקציה to_csv() .

פעולה זו תיצור קובץ CSV משולב של קובצי CSV של 'test1' ו-'test2' בספריית העבודה שלנו עם השם שצוין, כלומר, merged.csv.

דוגמה מס' 2: שימוש בפונקציה concat()

נייבא תחילה את מודול הפנדות. שיטת המפה תקרא כל קובץ CSV שהעברנו באמצעות pd.read_csv(). הקבצים הממופים האלה (קובצי CSV) ישולבו לאורך ציר השורות כברירת מחדל באמצעות הפונקציה pd.concat(). אם ברצוננו לשלב קובצי CSV בצורה אופקית, נוכל להעביר את axis=1. ציון ה- ignore index = True יוצר גם ערכי אינדקס רציפים עבור מסגרת הנתונים המשולבת.

ה-pd.read_csv() מועבר בתוך הפונקציה concat() כדי לקרוא את קבצי ה-CSV לתוך מסגרת הנתונים של pandas לאחר שרשור.

השגנו מסגרת נתונים עם נתונים משולבים של כל קבצי ה-CSV בספריית העבודה. כעת, בואו נמיר אותו לקובץ CSV.

ה-CSV המשולב שלנו נוצר בספרייה הנוכחית.

שיטה מס' 2: שילוב קבצי CSV עם מבנים או עמודות שונות

דנו בשילוב קבצי CSV עם אותם עמודות ומבנה בשיטה הראשונה. בשיטה זו נשלב קבצי CSV עם עמודות ומבנים שונים.

דוגמה מס' 1: שימוש בפונקציה merge()

הפונקציה 'pandas.merge()' במודול pandas יכולה לשלב שני קובצי CSV. מיזוג מתייחס פשוט לשילוב של שני מערכי נתונים למערך נתונים אחד המבוסס על עמודות או תכונות משותפות.

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

  • פְּנִימִי
  • ימין
  • שמאלה
  • חִיצוֹנִי

כדי לבצע מיזוגים מסוג זה, נשתמש בשני קבצי CSV.

שים לב שלפחות מאפיין אחד או עמודה אחת חייבת להיות משותף לשני קובצי ה-CSV. כפי שצוין, העמודה 'שם' וחלק מהמאפיינים שלה משותפים לשני קובצי ה-CSV.

מיזוג באמצעות צירוף פנימי

ציון הפרמטר how=’inner’ בפונקציה merge() תשלב את שתי מסגרות הנתונים לפי העמודה שצוינה ולאחר מכן תספק מסגרת נתונים חדשה שמכילה רק את השורות עם ערכים זהים/אותם בשתי מסגרות הנתונים המקוריות.

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

מיזוג באמצעות Right Outer Join

כאשר פרמטר how='right' מצוין, שתי מסגרות הנתונים ישולבו על סמך העמודה שציינו עבור הפרמטר 'on'. ומסגרת נתונים חדשה המכילה את כל השורות ממסגרת הנתונים הימנית, כולל כל השורות שעבורן מסגרת הנתונים השמאלית אינה מכילה ערכים, תוחזר, כאשר ערך העמודה של מסגרת הנתונים השמאלית מוגדר ל-NAN.

מיזוג באמצעות Left Outer Join

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

מיזוג באמצעות חיבור חיצוני מלא

כאשר צוין how='outer', שתי מסגרות הנתונים ישולבו בהתאם לעמודה שצוינה עבור הפרמטר 'on', ויחזירו מסגרת נתונים חדשה המכילה את השורות ממסגרות הנתונים של df1 ו-df2 והגדרת NAN כערך עבור כל השורות שעבורם נתונים חסרים באחת ממסגרות הנתונים.

דוגמה מס' 2: שילוב כל קבצי ה-CSV בספריית העבודה

בשיטה זו, נשתמש במודול glob כדי לשלב את כל קובצי ה-csv לתוך Pandas DataFrame. תחילה היה צורך לייבא את כל הספריות. לאחר מכן, נגדיר נתיב לכל קובץ CSV שנרצה לשלב. נתיב הקובץ הוא הארגומנט הראשון עבור הפונקציה os.path.join() בדוגמה למטה, והארגומנט השני הוא רכיבי הנתיב או קבצי .csv שיש לחבר. כאן, הביטוי '*.csv' ימצא ויחזיר כל קובץ בספריית העבודה שמסתיימת בסיומת קובץ ה-csv. הפונקציה glob.glob(files joined) מקבלת רשימה של שמות הקבצים הממוזגים כקלט ומוציאה רשימה של כל הקבצים הממוזגים/משולבים.

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

מסגרת הנתונים הזו תהפוך לקובץ CSV, והפונקציה to_csv() תשמש להמרה זו. קובץ ה-CSV החדש הזה יהיה קובצי ה-CSV המשולבים שנוצרו מכל קובצי ה-CSV המאוחסנים בספריית העבודה הנוכחית.

סיכום

בפוסט זה, דנו מדוע עלינו לשלב קבצי CSV. דנו כיצד ניתן לשלב שני קובצי CSV או יותר ב-Python. חילקנו את המדריך הזה לשני חלקים. בסעיף הראשון, הסברנו כיצד להשתמש בפונקציות append() ו-concat() כדי לשלב קובצי CSV מאותם מבנה או שמות עמודות. בסעיף השני, השתמשנו בשיטת merge(), os.path.join(), ובשיטת glob לשילוב קבצי CSV של עמודות ומבנים שונים.