pandas

מבוא, תרגילים ודוגמאות בספריית pandas בשימוש python

מבוא לספריית Pandas

Pandas היא ספריית Python המספקת יכולות רב עוצמה של מניפולציה וניתוח נתונים. הוא בנוי על גבי ספריית NumPy ונועד לעבוד עם נתונים במגוון פורמטים, כולל CSV, Excel, מסדי נתונים של SQL ועוד.
במידה ותרצו לקרוא על מבוא ל pandas, לפני המעבר על הפונקציות מטה, מוזמנים לקרוא את המאמר .

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

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

חלק מהתכונות והיתרונות העיקריים של Pandas כוללים:

מניפולציה של נתונים: Pandas מספקת סט עשיר של פונקציות לניקוי, שינוי ומיזוג נתונים ממקורות שונים, מה שמקל על הכנת נתונים לניתוח.

חקר נתונים: Pandas מאפשר לחקור ולסכם נתונים בקלות באמצעות נתונים סטטיסטיים תיאוריים, ויזואליזציה ופונקציות שרטוט.

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

אינטגרציה עם ספריות אחרות: פנדות יכולות להשתלב בקלות עם ספריות אחרות של מדעי הנתונים ולמידת מכונה, כגון NumPy, Matplotlib ו-Scikit-learn, מה שהופך אותם לכלי רב עוצמה לניתוח נתונים ומידול.

Pandas הוא כלי רב תכליתי ורב עוצמה לעבודה עם נתונים ב-Python ונמצא בשימוש נרחב בניתוח נתונים, מחקר מדעי ותחומים אחרים.

DataFrame

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

סוגי עמודות ב DataFrame

Pandas מספקת את סוגי הנתונים הבסיסיים הבאים עבור עמודות ב-DataFrame:

  • int: משמש עבור עמודות עם ערכים מספריים שלמים לדוגמה 15-,5,7,500…
  • float: משמש עבור עמודות עם ערכים מספריים עם נקודה עשרונית, לדוגמה 5.2, 2.3-, 7.0 …
  • bool: משמש עבור עמודות עם ערכים בוליאניים (True/False).
  • datetime:משמש עבור עמודות עם ערכי תאריך ו/או שעה. כמו לדוגמה: '2022-01-01', '2022-01-02', '2022-01-03'
  • timedelta: זה משמש עבור עמודות עם הפרשי זמן.
  • category: זה משמש עבור עמודות עם מספר מוגבל של ערכים ייחודיים, המייצגים לעתים קרובות משתנים קטגוריים.
  • object: משמש עבור עמודות עם מחרוזות או אובייקטים אחרים של Python. כמו לדוגמה : Alice', 'Bob', 'Charlie'

ראוי לציין שסוגי נתונים אלה הם הרחבות של סוגי הנתונים NumPy, ופנדות תומכות גם ברבים מאותם סוגי נתונים כמו NumPy, כולל מספרים מרוכבים ומספרים שלמים ללא סימנים. בנוסף, pandas מספקת גם מספר סוגי נתונים מיוחדים, כגון Interval, המייצג מגוון של ערכים, ו-Sparse, המאפשרת אחסון ומניפולציה יעילה של נתונים עם ערכים חסרים רבים.

תרגילים ודוגמאות בשימוש בספריית pandas

ייבוא סיפריית pandas: תחילה יש לייבא את הספרייה pandas, על מנת לא לקרוא לפונקציה בשלמותה, כאשר אנחנו נקרא לפונקציה מהספריה, נרצה לכתוב את זה בקיצור ולא את כל המילה ולכן נוסיף "as pd" וכעת ניתן לקרוא לה באמצעות צמד האותיות pd.

				
					import pandas as pd
				
			

1. יצירת DataFrame מ- Dictionary: ניתן ליצור DataFrame מאפס על ידי העברת dictionary באמצעות pd.DataFrame()‎. במקרה הזה, שמות העמודות נלקחות בצורה אוטמטית מה key.

				
					# Creating a DataFrame from a dictionary
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}
df = pd.DataFrame(data)
				
			

2. יצירת DataFrame מ- List: ניתן ליצור DataFrame מאפס על ידי רשימה של רשימות באמצעות pd.DataFrame()‎. 
במקרה הזה אנחנו נצטרך להוסיף את שמות העמודות.

				
					# Creating a DataFrame from a list of lists
data = [['Alice', 25], ['Bob', 30], ['Charlie', 35]]
df = pd.DataFrame(data, columns=['name', 'age'])
				
			

3. קריאת נתונים מקובץ: ניתן לקרוא נתונים מקובץ CSV, Excel על ידי שימוש בפונקציית ()*_pd.read המתאימה.

				
					# Reading a CSV file
df = pd.read_csv('filename.csv')

# Reading an Excel file
df = pd.read_excel('filename.xlsx')
				
			

4. קריאת נתונים מdatabase: ניתן לקרוא נתונים באמצעות שאילתת SQL על ידי שימוש בפונקציית ()*_pd.read המתאימה.
במקרה הנ"ל השתמשנו בדאטהבייס שנמצא ב sqllite…

				
					# Reading a SQL table
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql_query('SELECT * FROM table_name', conn)

				
			

5. הצגת נתונים: אתה יכול להציג את השורות העליונות והתחתונות של DataFrame באמצעות שיטות .()head ו-()tail בהתאמה.
הצגת X השורות הראשונות/האחרונות. במידה ולא יהיה מספר בסוגריים, הדיפולט הוא :5 .

				
					# Viewing the top 1 rows
print(df.head(1))

# Output
name   age
Alice   25
				
			
				
					# Viewing the bottom 2 rows
print(df.tail(2))

# Output
name     age
Bob       30
Charlie   35
				
			

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

				
					import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], # Name Column
        'Age': [25, 30, 35], # Age Column
        'Gender': ['F', 'M', 'M']} # Gender Column

df = pd.DataFrame(data)

df.info() #info

# Output
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
Column  Non-Null Count  Dtype 
------  --------------  ----- 
Name    3 non-null      object
Age     3 non-null      int64 
Gender  3 non-null      object
dtypes: int64(1), object(2)
memory usage: 200.0+ bytes
				
			

7. גישה לעמודות: אתה יכול לגשת לעמודה של DataFrame באמצעות תחביר df['column_name'] או df.column_name.

				
					# Accessing the 'name' column using df['column_name']
print(df['name'])

# Output
name
Alice
Bob
Charlie

# Accessing the 'age' column using df.column_name
print(df.age)

# Output
age
25
30
35
				
			

8. הוספת עמודה חדשה: ישנם מספר אפשרויות להוספת עמודות חדשות

  • הוספת עמודה על סמך עמודות קיימות
  • הוספת עמודה עם ערך קבוע
  • הוספת עמודה עם רשימת ערכים
  • הוספת עמודה עם ערכים המחושבים מפונקציה
				
					import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

# Add a new column 'C' by adding values from columns 'A' and 'B'
df['C'] = df['A'] + df['B']  
# Output
A  B  C
5  4  1
7  5  2
9  6  3


# Add a new column 'C' with a constant value of 0
df['C'] = 0  
# Output
A  B  C
0  4  1
0  5  2
0  6  3


# Add a new column 'C' with values from a list
values = [4, 5, 6]
df['C'] = values  

# Output
A  B  C
4  4  1
5  5  2
6  6  3


# Add a new column 'B' with values calculated from a function
def my_func(x): #for each number get the power
    return x ** 2 
    
df['C'] = df['A'].apply(my_func) 

# Output
A  B  C
1  4  1
4  5  2
9  6  3

				
			

9. מחיקת עמודה : מחיקת עמודה על ידי שימוש בפונקציית ()drop

				
					import pandas as pd

# Create a sample DataFrame
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'Dave'], # Name column
                   'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}) # City column


# Drop the 'City' column
df = df.drop('City', axis=1)

# Output
Name
Alice
Bob
Charlie
Dave
				
			

10. מחיקת שורה : מחיקת שורה על ידי שימוש בפונקציית ()drop

				
					import pandas as pd

# Create a sample DataFrame
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'Dave'], # Name column
    'Age': [25, 30, 35, 40]}) # Age column

# Drop the first row
df = df.drop(0, axis=0)

# Output
Name     Age
Bob      30
Charlie  35
Dave     40
				
			

11. סינון שורות: ניתן לסנן שורות של DataFrame באמצעות אינדקס בוליאני, הכולל יצירת מסכה בוליאנית שבוחרת את השורות הרצויות. כלומר סינון השורות על ידי קבלת תשובה של נכון/לא נכון ולאחר מכן סינון של השורות ה"נכונות" בלבד.

				
					data = {'Name': ['Alice', 'Bob', 'Charlie'],  # Name column
        'Age': [25, 30, 35]} # Age column

df = pd.DataFrame(data)


# Creating a boolean mask
mask = df['age'] > 30

# Applying the boolean mask to the DataFrame
filtered_df = df[mask]

# We can do it in one line
filtered_df = df[df['age'] > 30]

# Displaying the filtered DataFrame
print(filtered_df)

# Output
name     age
Charlie   35


				
			

12. פונקציות חישוב: ניתן לחשב נתונים באמצעות פונקציות כגון ()mean(), sum(), count וכו' .

  • ספירה – ספירה של כמות השורות לכל קבוצה באמצעות פונקציית ()count
  • סכום – סכימה של פונקציות באמצעות פונקציית ()sum
  • ממוצע – ממוצע של עמודה באמצעות פונקציית ()mean
  • חציון – חציון הנתונים של עמודה באמצעות פונקציית ()median
  • מקסימום – קבלת הערך המקסימלי בעמודה באמצעות פונקציית ()max
  • מינימום – קבלת הערך המינימלי בעמודה באמצעות פונקציית ()min
				
					import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], # Name column
        'Age': [25, 30, 35, 40, 45], # Age column
        'Salary': [50000, 60000, 55000, 75000, 80000]} # Salary column

df = pd.DataFrame(data)

# Count of the Name column
count_name = df['Name'].count() #count
# Output
5


# Sum of the Salary column
total_salary = df['Salary'].sum() #sum
# Output
315000


# Mean of the Age column
average_age = df['Age'].mean() #mean
# Output
35.0

# Median of the Salary column
median_salary = df['Salary'].median() #median
# Output
55000.0

# Maximum Salary
max_salary = df['Salary'].max() #max
# Output
80000


# Minimun Salary
min_age = df['Age'].min() #min
# Output
25


				
			

13. קיבוץ נתונים: ניתן לקבץ נתונים לפי עמודה אחת או יותר באמצעות שיטת ()groupby .

כמו כן יש אפשרות להשתמש באגרציות לפי קיבוץ נתונים ובכך לקבל אגרגציה לפי קבוצת נתונים. לדוגמה:

  • ספירה – ספירה של כמות השורות לכל קבוצה באמצעות פונקציית ()count
  • סכום – סכימה של פונקציות באמצעות פונקציית ()sum
  • ממוצע – ממוצע של עמודה באמצעות פונקציית ()mean
  • חציון – חציון הנתונים של עמודה באמצעות פונקציית ()median
  • מקסימום – קבלת הערך המקסימלי בעמודה באמצעות פונקציית ()max
  • מינימום – קבלת הערך המינימלי בעמודה באמצעות פונקציית ()min
				
					import pandas as pd

# Create DataFrame
data = {'group': ['A', 'A', 'B', 'B', 'B'], 'value': [3, 5, 2, 4, 6]}
df = pd.DataFrame(data)

# Group by 'group' column and apply aggregation functions
df_grouped = df.groupby('group')

# Count of the value per group
df_grouped.count() #count
# Output
group      
A         2
B         3


# Sum of the value per group
df_grouped.sum() #sum
# Output
group       
A           8
B          12


# Average of the value per group
df_grouped.mean() #average
# Output
A         4.0
B         4.0

# Median of the value per group
df_grouped.median() #median
# Output
A         4.0
B         4.0

# Maximum value per group
df_grouped.max() #max
# Output
A           5
B           6


# Minimun value per group
df_grouped.min() #min
# Output
A           3
B           2


				
			

14. מיון נתונים: ניתן למיין DataFrame לפי עמודה אחת או יותר באמצעות שיטת ()sort_values .

זה ממיין את ה-DataFrame לפי העמודה, בסדר עולה. אם ברצונך למיין בסדר יורד, תוכל להגדיר את הפרמטר 'ascending' ל-False:

				
					import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], # Name column
        'Age': [25, 21, 23, 27, 22], # Age column
        'Salary': [50000, 35000, 45000, 70000, 40000]} # Salary column

df = pd.DataFrame(data)

# Sort by value descending
df.sort_values('value', ascending=False)
# Output
group  value
B      6
A      5
B      4
A      3
B      2


# Sorting by multiple columns, group then value
df.sort_values(['group', 'value'])
# Output
group  value
A      3
A      5
B      2
B      4
B      6



				
			

15. שמירת נתונים: יש אפשרות לשמור  DataFrame בפורמטים שונים של קבצים:

  • שמירת DataFrame בפורמט CSV (הארגומנט index=False משמש כדי לא לכלול את אינדקס השורה מקובץ הפלט.)
  • שמירת DataFrame בפורמט Excel (הארגומנט index=False משמש כדי לא לכלול את אינדקס השורה מקובץ הפלט.)
  • שמירת DataFrame בפורמט JSON (הארגומנט orient='records' משמש לעיצוב הפלט כרשימת JSON של רשומות.)
  • שמירת DataFrame במסד נתונים של SQL (הארגומנט if_exists='replace' משמש להחלפת הטבלה אם היא כבר קיימת במסד הנתונים. הארגומנט index=False משמש כדי לא לכלול את אינדקס השורה מקובץ הפלט.)
				
					# Save DataFrame to CSV file
df.to_csv('my_data.csv', index=False)


# Save DataFrame to Excel file
df.to_excel('my_data.xlsx', index=False)


# Save DataFrame to JSON file
df.to_json('my_data.json', orient='records')


# Create a connection to SQLite database
conn = sqlite3.connect('my_db.sqlite')
# Save DataFrame to SQL table
df.to_sql('my_table', conn, if_exists='replace', index=False)
				
			

במידה ותרצו לתרגל תרגיל מלא בדרגות קושי שונות בנושא טיטאניק, מוזמנים להכנס לאתר

אהבת את המאמר?

שיתוף ב facebook
שתף בפייסבוק
שיתוף ב twitter
שתף ב - Twitter
שיתוף ב linkedin
שתף ב- Linkdin
שיתוף ב whatsapp
שתף ב - Whatsapp

השאר תגובה

3 2 הצבעות
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
הצג את כל התגובות

[…] מעוניינים לקרוא על פונקציות שאתם חייבים להכיר? מוזמנים להכנס לאתר […]

[…] התרגול הוא באמצעות שימוש בספריית Pandas בשפת תכנות פייתון. .על מנת להבין טיפה יותר אודות pandas מוזמנים לקרוא את המאמר מבוא ל pandas .בנוסף, מוזמנים לקרוא בנושא פונקציות שאתם חייבים להכיר. […]

אולי יעניין אותך גם