המרת PySpark DataFrame ל-CSV

Hmrt Pyspark Dataframe L Csv



בואו נסתכל על ארבעת התרחישים השונים של המרת PySpark DataFrame ל-CSV. באופן ישיר, אנו משתמשים בשיטת write.csv() כדי להמיר את PySpark DataFrame ל-CSV. באמצעות הפונקציה to_csv() אנו ממירים את PySpark Pandas DataFrame ל-CSV. זה יכול להיות אפשרי גם על ידי המרתו למערך NumPy.

נושא התוכן:

אם אתה רוצה לדעת על PySpark DataFrame והתקנת מודול, עבור על זה מאמר .







PySpark DataFrame ל-CSV על ידי המרה ל-Pandas DataFrame

ה-to_csv() היא שיטה הזמינה במודול Pandas אשר ממירה את Pandas DataFrame ל-CSV. ראשית, עלינו להמיר את PySpark DataFrame שלנו ל-Pandas DataFrame. שיטת toPandas() משמשת לשם כך. בוא נראה את התחביר של to_csv() יחד עם הפרמטרים שלו.



תחביר:



pandas_dataframe_obj.to_csv(path/ 'שם_קובץ.csv' , כּוֹתֶרֶת ,אינדקס,עמודות,מצב...)
  1. עלינו לציין את שם הקובץ של קובץ ה-CSV. אם ברצונך לאחסן את ה-CSV שהורדת במיקום מסוים במחשב האישי שלך, תוכל גם לציין את הנתיב יחד עם שם הקובץ.
  2. עמודות נכללות אם הכותרת מוגדרת ל-'True'. אם אינך צריך עמודות, הגדר את הכותרת ל'שקר'.
  3. מדדים יצוינו אם האינדקס מוגדר ל-'True'. אם אינך זקוק למדדים, הגדר את האינדקס ל-'False'.
  4. פרמטר Columns לוקח רשימה של שמות עמודות שבהן נוכל לציין אילו עמודות מסוימות יחולצו לקובץ ה-CSV.
  5. אנו יכולים להוסיף את הרשומות ל-CSV באמצעות פרמטר מצב. הוספה - 'a' משמש לעשות זאת.

דוגמה 1: עם פרמטרי הכותרת והאינדקס

צור את ה-'skills_df' PySpark DataFrame עם 3 שורות ו-4 עמודות. המר את ה-DataFrame הזה ל-CSV על-ידי המרתו תחילה ל-Pandas DataFrame.





ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# נתוני מיומנויות עם 3 שורות ו-4 עמודות

כישורים =[{ 'תְעוּדַת זֶהוּת' : 123 , 'אדם' : 'דבש' , 'מְיוּמָנוּת' : 'צִיוּר' , 'פרס' : 25,000 },

{ 'תְעוּדַת זֶהוּת' : 112 , 'אדם' : 'מוני' , 'מְיוּמָנוּת' : 'לִרְקוֹד' , 'פרס' : 2000 },

{ 'תְעוּדַת זֶהוּת' : 153 , 'אדם' : 'טולסי' , 'מְיוּמָנוּת' : 'קריאה' , 'פרס' : 1200 }

]

# צור את מסגרת הנתונים של כישורים מהנתונים שלעיל

skills_df = linuxhint_spark_app.createDataFrame(skills)

skills_df.show()

# המר skills_df ל-Pandas DataFrame

pandas_skills_df= skills_df.toPandas()

print(pandas_skills_df)

# המר את ה-DataFrame הזה ל-csv עם כותרת ואינדקס

pandas_skills_df.to_csv( 'pandas_skills1.csv' , כּוֹתֶרֶת =True, index=True)

תְפוּקָה:



אנו יכולים לראות שה-PySpark DataFrame מומר ל-Pandas DataFrame. בואו נראה אם ​​הוא מומר ל-CSV עם שמות עמודות ואינדקסים:

דוגמה 2: הוסף את הנתונים ל-CSV

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

ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

כישורים =[{ 'תְעוּדַת זֶהוּת' : 90 , 'אדם' : 'בהרגב' , 'מְיוּמָנוּת' : 'קריאה' , 'פרס' : 12000 }

]

# צור את מסגרת הנתונים של כישורים מהנתונים שלעיל

skills_df = linuxhint_spark_app.createDataFrame(skills)

# המר skills_df ל-Pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# הוסף DataFrame זה לקובץ pandas_skills1.csv

pandas_skills_df.to_csv( 'pandas_skills1.csv' , מצב= 'א' , כּוֹתֶרֶת =שקר)

פלט CSV:

אנו יכולים לראות שנוספה שורה חדשה לקובץ ה-CSV.

דוגמה 3: עם פרמטר העמודות

בואו נעשה את אותו DataFrame ונמיר אותו ל-CSV עם שתי עמודות: 'אדם' ו-'פרס'.

ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# נתוני מיומנויות עם 3 שורות ו-4 עמודות

כישורים =[{ 'תְעוּדַת זֶהוּת' : 123 , 'אדם' : 'דבש' , 'מְיוּמָנוּת' : 'צִיוּר' , 'פרס' : 25,000 },

{ 'תְעוּדַת זֶהוּת' : 112 , 'אדם' : 'מוני' , 'מְיוּמָנוּת' : 'לִרְקוֹד' , 'פרס' : 2000 },

{ 'תְעוּדַת זֶהוּת' : 153 , 'אדם' : 'טולסי' , 'מְיוּמָנוּת' : 'קריאה' , 'פרס' : 1200 }

]

# צור את מסגרת הנתונים של כישורים מהנתונים שלעיל

skills_df = linuxhint_spark_app.createDataFrame(skills)

# המר skills_df ל-Pandas DataFrame

pandas_skills_df= skills_df.toPandas()

# המר את ה-DataFrame הזה ל-csv עם עמודות ספציפיות

pandas_skills_df.to_csv( 'pandas_skills2.csv' , עמודות=[ 'אדם' , 'פרס' ])

פלט CSV:

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

PySpark Pandas DataFrame ל-CSV באמצעות שיטת To_Csv()

ה-to_csv() היא שיטה הזמינה במודול Pandas אשר ממירה את Pandas DataFrame ל-CSV. ראשית, עלינו להמיר את PySpark DataFrame שלנו ל-Pandas DataFrame. שיטת toPandas() משמשת לשם כך. בוא נראה את התחביר של to_csv() יחד עם הפרמטרים שלו:

תחביר:

pyspark_pandas_dataframe_obj.to_csv(path/ 'שם_קובץ.csv' , כּוֹתֶרֶת ,אינדקס,עמודות,...)
  1. עלינו לציין את שם הקובץ של קובץ ה-CSV. אם ברצונך לאחסן את ה-CSV שהורדת במיקום מסוים במחשב האישי שלך, תוכל גם לציין את הנתיב יחד עם שם הקובץ.
  2. עמודות נכללות אם הכותרת מוגדרת ל-'True'. אם אינך צריך עמודות, הגדר את הכותרת ל'שקר'.
  3. מדדים יצוינו אם האינדקס מוגדר ל-'True'. אם אינך זקוק למדדים, הגדר את האינדקס ל-'False'.
  4. הפרמטר עמודות לוקח רשימה של שמות עמודות שבהן נוכל לציין אילו עמודות מסוימות יחולצו לקובץ ה-CSV.

דוגמה 1: עם פרמטר העמודות

צור PySpark Pandas DataFrame עם 3 עמודות והמר אותו ל-CSV באמצעות to_csv() עם העמודות 'אדם' ו-'פרס'.

מ-pyspark ייבוא ​​פנדות

pyspark_pandas_dataframe=pandas.DataFrame({ 'תְעוּדַת זֶהוּת' :[ 90 , 78 , 90 , 57 ], 'אדם' :[ 'דבש' , 'מוני' , 'עַצמוֹ' , 'רדה' ], 'פרס' :[ 1 , 2 , 3 , 4 ]})

print(pyspark_pandas_dataframe)

# המר את ה-DataFrame הזה ל-csv עם עמודות ספציפיות

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , עמודות=[ 'אדם' , 'פרס' ])

תְפוּקָה:

אנו יכולים לראות שה-PySpark Pandas DataFrame מומר ל-CSV עם שתי מחיצות. כל מחיצה מחזיקה 2 רשומות. כמו כן, העמודות ב-CSV הן 'אדם' ו'פרס' בלבד.

קובץ מחיצה 1:

קובץ מחיצה 2:

דוגמה 2: עם פרמטר הכותרת

השתמש ב-DataFrame הקודם וציין את פרמטר הכותרת על ידי הגדרתו ל-'True'.

מ-pyspark ייבוא ​​פנדות

pyspark_pandas_dataframe=pandas.DataFrame({ 'תְעוּדַת זֶהוּת' :[ 90 , 78 , 90 , 57 ], 'אדם' :[ 'דבש' , 'מוני' , 'עַצמוֹ' , 'רדה' ], 'פרס' :[ 1 , 2 , 3 , 4 ]})

# המר את ה-DataFrame הזה ל-csv עם כותרת.

pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , כּוֹתֶרֶת =נכון)

פלט CSV:

אנו יכולים לראות שה-PySpark Pandas DataFrame מומר ל-CSV עם שתי מחיצות. כל מחיצה מכילה 2 רשומות עם שמות עמודות.

קובץ מחיצה 1:

קובץ מחיצה 2:

PySpark Pandas DataFrame ל-CSV על ידי המרה למערך NumPy

יש לנו אפשרות להמיר את PySpark Pandas DataFrame ל-CSV על ידי המרה למערך Numpy. ה-to_numpy() היא שיטה הזמינה במודול PySpark Pandas אשר ממירה את ה-PySpark Pandas DataFrame למערך NumPy.

תחביר:

pyspark_pandas_dataframe_obj.to_numpy()

זה לא ייקח שום פרמטר.

שימוש בשיטת Tofile()

לאחר המרה למערך NumPy, נוכל להשתמש בשיטת tofile() כדי להמיר את NumPy ל-CSV. כאן, הוא מאחסן כל רשומה בתא חדש בעמודה בקובץ CSV.

תחביר:

array_obj.to_numpy(filename/path,sep=' ')

זה לוקח את שם הקובץ או הנתיב של CSV ומפריד.

דוגמא:

צור PySpark Pandas DataFrame עם 3 עמודות ו-4 רשומות והמר אותו ל-CSV על ידי המרתו תחילה למערך NumPy.

מ-pyspark ייבוא ​​פנדות

pyspark_pandas_dataframe=pandas.DataFrame({ 'תְעוּדַת זֶהוּת' :[ 90 , 78 , 90 , 57 ], 'אדם' :[ 'דבש' , 'מוני' , 'עַצמוֹ' , 'רדה' ], 'פרס' :[ 1 , 2 , 3 , 4 ]})

# המר את ה-DataFrame לעיל למערך numpy

converted = pyspark_pandas_dataframe.to_numpy()

הדפס (הומר)

# שימוש ב-tofile()

converted.tofile( 'converted1.csv' , ספטמבר = ',' )

תְפוּקָה:

[[ 90 'דבש' 1 ]

[ 78 'מוני' 2 ]

[ 90 'עַצמוֹ' 3 ]

[ 57 'רדה' 4 ]]

אנו יכולים לראות שה-PySpark Pandas DataFrame מומר למערך NumPy (12 ערכים). אם אתה יכול לראות את נתוני ה-CSV, הוא מאחסן כל ערך תא בעמודה חדשה.

PySpark DataFrame ל-CSV באמצעות שיטת Write.Csv()

שיטת write.csv() לוקחת את שם הקובץ/נתיב שבו אנחנו צריכים לשמור את קובץ ה-CSV כפרמטר.

תחביר:

dataframe_object.coalesce( 1 ).write.csv( 'שם קובץ' )

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

דוגמא:

שקול את PySpark DataFrame עם 4 רשומות עם 4 עמודות. כתוב DataFrame זה ל-CSV עם הקובץ בשם 'market_details'.

ייבוא ​​pyspark

מ-pyspark.sql ייבוא ​​SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'רמז לינוקס' ).getOrCreate()

# נתוני שוק עם 4 שורות ו-4 עמודות

שוק =[{ 'בֵּינוֹנִי' : 'mz-001' , 'm_name' : 'א ב ג' , 'm_city' : 'דלהי' , 'm_state' : 'דלהי' },

{ 'בֵּינוֹנִי' : 'mz-002' , 'm_name' : 'XYZ' , 'm_city' : 'פטנה' , 'm_state' : 'מזל' },

{ 'בֵּינוֹנִי' : 'mz-003' , 'm_name' : 'PQR' , 'm_city' : 'פלורידה' , 'm_state' : 'אחד' },

{ 'בֵּינוֹנִי' : 'mz-004' , 'm_name' : 'א ב ג' , 'm_city' : 'דלהי' , 'm_state' : 'מזל' }

]



# צור את מסגרת הנתונים של השוק מהנתונים שלעיל

market_df = linuxhint_spark_app.createDataFrame(market)

# נתוני שוק בפועל

market_df.show()

# write.csv()

market_df.coalesce( 1 ).write.csv( 'פרטי_שוק' )

תְפוּקָה:

בוא נבדוק את הקובץ:

פתח את הקובץ האחרון כדי לראות את הרשומות.

סיכום

למדנו את ארבעת התרחישים השונים הממירים את PySpark DataFrame ל-CSV עם דוגמאות על ידי בחינת פרמטרים שונים. כאשר אתה עובד עם PySpark DataFrame, יש לך שתי אפשרויות להמיר את ה-DataFrame הזה ל-CSV: דרך אחת היא שימוש בשיטת write() ואחרת היא שימוש בשיטת to_csv() על ידי המרה ל-Pandas DataFrame. אם אתה עובד עם PySpark Pandas DataFrame, אתה יכול גם להשתמש ב-to_csv() וב-tofile() על ידי המרה למערך NumPy.