Sarah111-AHM / Semsmah

2 stars 0 forks source link

summary of the panda for the quiz #44

Open Sarah111-AHM opened 1 year ago

Sarah111-AHM commented 1 year ago

This is a dataset containing information about sales transactions in different stores. Convert the following data to a DataFrame and perform the following tasks:


data = {'store_id': ['A', 'B', 'C', 'A', 'B'],
        'product_name': ['Apple', 'Banana', 'Orange', 'Apple', 'Grapes'],
        'quantity_sold': [10, 15, 20, 5, 12],
        'revenue': [50, 60, 80, 30, 45]}

a) Calculate the total revenue for each store. b) Sort the DataFrame based on the "quantity_sold" column in ascending order. c) Calculate the total quantity sold for each product. d) Add a new column to the DataFrame called "Profit" and calculate the profit for each transaction by deducting the cost price from the revenue.

import pandas as pd

data = {'store_id': ['A', 'B', 'C', 'A', 'B'], 'product_name': ['Apple', 'Banana', 'Orange', 'Apple', 'Grapes'], 'quantity_sold': [10, 15, 20, 5, 12], 'revenue': [50, 60, 80, 30, 45]}

Convert data to a DataFrame

df = pd.DataFrame(data)

Task a) Calculate the total revenue for each store

total_revenue = df.groupby('store_id')['revenue'].sum() print("Total Revenue by Store:") print(total_revenue) print()

Task b) Sort the DataFrame based on the "quantity_sold" column in ascending order

df_sorted = df.sort_values('quantity_sold') print("Sorted DataFrame based on Quantity Sold:") print(df_sorted) print()

Task c) Calculate the total quantity sold for each product

total_quantity_sold = df.groupby('product_name')['quantity_sold'].sum() print("Total Quantity Sold by Product:") print(total_quantity_sold) print()

Task d) Add a new column called "Profit" and calculate the profit for each transaction

cost_price = 20 # Assuming the cost price is $20 per unit df['profit'] = df['revenue'] - (cost_price * df['quantity_sold']) print("DataFrame with Profit Column:") print(df)

pd.DataFrame(data): تستخدم هذه الدالة لتحويل البيانات المعطاة (data) إلى DataFrame. يتم تمثيل البيانات في شكل جدول يتكون من صفوف وأعمدة.

df.groupby('store_id')['revenue'].sum(): تقوم هذه الدالة بتجميع البيانات وحساب إجمالي الإيرادات لكل قيمة فريدة في عمود "store_id". تم استخدام groupby لتجميع البيانات بناءً على القيم في عمود "store_id"، ثم تم استخدام ['revenue'].sum() لحساب إجمالي الإيرادات لكل مجموعة.

df.sort_values('quantity_sold'): تستخدم هذه الدالة لفرز البيانات بناءً على القيم في عمود "quantity_sold". تم استخدام sort_values مع عمود "quantity_sold" لترتيب الصفوف بناءً على قيمها بترتيب تصاعدي.

df.groupby('product_name')['quantity_sold'].sum(): تقوم هذه الدالة بتجميع البيانات وحساب إجمالي الكمية المباعة لكل منتج. تم استخدام groupby لتجميع البيانات بناءً على القيم في عمود "product_name"، ثم تم استخدام ['quantity_sold'].sum() لحساب إجمالي الكمية المباعة لكل منتج.

df['profit'] = df['revenue'] - (cost_price * df['quantity_sold']): تستخدم هذه الدالة لإضافة عمود جديد إلى DataFrame يسمى "profit" وحساب الربح لكل عملية بيع. تم استخدام عمود "revenue" للإيرادات وعمود "quantity_sold" للكمية المباعة، وقيمة سعر التكلفة cost_price لحساب الربح.

 This is a dataset containing information about employees' work hours and productivity. Convert the following data to a DataFrame and perform the following tasks:

data = {'names': ['John', 'Sarah', 'Michael', 'Emma', 'Daniel'], 'hours_worked': [40, 35, 42, 38, 40], 'productivity': [80, 75, 90, 85, 88]} a) Calculate the total number of hours worked by all employees. b) Sort the DataFrame based on the "productivity" column in descending order. c) Calculate the average productivity for all employees. d) Add a new column to the DataFrame called "Performance" and set the value to "High" if the employee's productivity is above 85, "Medium" if it's between 70 and 85, and "Low" otherwise.

import pandas as pd

data = {'names': ['John', 'Sarah', 'Michael', 'Emma', 'Daniel'],
        'hours_worked': [40, 35, 42, 38, 40],
        'productivity': [80, 75, 90, 85, 88]}

# Convert data to a DataFrame
df = pd.DataFrame(data)

# Task a) Calculate the total number of hours worked by all employees
total_hours_worked = df['hours_worked'].sum()
print("Total Hours Worked by all Employees:", total_hours_worked)
print()

# Task b) Sort the DataFrame based on the "productivity" column in descending order
df_sorted = df.sort_values('productivity', ascending=False)
print("Sorted DataFrame based on Productivity:")
print(df_sorted)
print()

# Task c) Calculate the average productivity for all employees
average_productivity = df['productivity'].mean()
print("Average Productivity:", average_productivity)
print()

# Task d) Add a new column called "Performance" based on productivity levels
df['Performance'] = pd.cut(df['productivity'], bins=[0, 70, 85, 100], labels=['Low', 'Medium', 'High'])
print("DataFrame with Performance Column:")
print(df)

تعتبر pd.DataFrame(data) هي الدالة المستخدمة لتحويل القاموس data إلى DataFrame. يحتوي القاموس data على معلومات حول أسماء الموظفين وساعات العمل والإنتاجية.

أما df['hours_worked'].sum() فتقوم بحساب إجمالي عدد ساعات العمل لجميع الموظفين. يتم تطبيق دالة sum() على عمود 'hours_worked' في الDataFrame.

df.sort_values('productivity', ascending=False) تستخدم لفرز الDataFrame بناءً على عمود 'productivity' بترتيب تنازلي. يتم استخدام دالة sort_values() مع العمود 'productivity'، ويتم ضبط المعامل ascending=False للفرز بترتيب تنازلي.

df['productivity'].mean() تقوم بحساب المتوسط ​​للإنتاجية لجميع الموظفين. يتم تطبيق دالة mean() على عمود 'productivity' في الDataFrame.

pd.cut(df['productivity'], bins=[0, 70, 85, 100], labels=['Low', 'Medium', 'High']) تستخدم لإضافة عمود جديد يسمى 'Performance' إلى الDataFrame بناءً على مستويات الإنتاجية. تستخدم دالة cut() لتصنيف قيم 'productivity' إلى فئات وتعيين تسميات ('Low', 'Medium', 'High') لكل فئة. يتم تخزين الفئات الناتجة في عمود 'Performance' في الDataFrame. Q1) This is a dataset containing information about students' grades in different subjects. Convert the following data to a DataFrame and perform the following tasks:

data = {'names': ['John', 'Sarah', 'Michael', 'Emma', 'Daniel'],
        'math': [85, 92, 78, 88, 90],
        'science': [90, 88, 92, 85, 80],
        'history': [75, 82, 80, 88, 85]}
a) Calculate the average grade for each student across all subjects.
b) Sort the DataFrame based on the "math" column in descending order.
c) Calculate the overall average grade for each subject.
d) Add a new column to the DataFrame called "Status" and set the value to "Pass" if the student's average grade is above 80, and "Fail" otherwise.
import pandas as pd

data = {'names': ['John', 'Sarah', 'Michael', 'Emma', 'Daniel'],
'math': [85, 92, 78, 88, 90],
'science': [90, 88, 92, 85, 80],
'history': [75, 82, 80, 88, 85]}

Convert data to a DataFrame
df = pd.DataFrame(data)

Task a) Calculate the average grade for each student across all subjects
df['average_grade'] = df[['math', 'science', 'history']].mean(axis=1)
print("Average Grade for Each Student:")
print(df)
print()

Task b) Sort the DataFrame based on the "math" column in descending order
df_sorted = df.sort_values('math', ascending=False)
print("Sorted DataFrame based on Math Grade:")
print(df_sorted)
print()

Task c) Calculate the overall average grade for each subject
subject_averages = df[['math', 'science', 'history']].mean()
print("Overall Average Grade for Each Subject:")
print(subject_averages)
print()

Task d) Add a new column called "Status" and set the value to "Pass" or "Fail" based on average grade
df['Status'] = df['average_grade'].apply(lambda x: 'Pass' if x > 80 else 'Fail')
print("DataFrame with Status Column:")
print(df)

Q1) This is a dataset containing information about employees in a company. Convert the following data to a DataFrame and perform the following tasks:

data = {'names': ['John', 'Sarah', 'Michael', 'Emma', 'Daniel', 'Emily'], 'ids': ['123456', '987654', '567890', '234567', '890123', '345678'], 'ages': [35, 28, 42, 31, 37, 26], 'department': ['IT', 'HR', 'Finance', 'Marketing', 'IT', 'Sales'], 'salary': [5000, 4000, 6000, 4500, 5500, 3800]} a) Sort the DataFrame based on the "ages" column in ascending order. b) Filter the DataFrame to only include employees who work in the "IT" department. c) Calculate the average salary of employees in the "Finance" department. d) Add a new column to the DataFrame called "Bonus" and calculate the bonus amount for each employee based on their salary. The bonus should be 10% of the salary.

# Convert data to a DataFrame
df = pd.DataFrame(data)

# Task a) Sort the DataFrame based on the "ages" column in ascending order
df_sorted = df.sort_values('ages')
print("Sorted DataFrame based on Ages:")
print(df_sorted)
print()

# Task b) Filter the DataFrame to only include employees who work in the "IT" department
df_it = df[df['department'] == 'IT']
print("DataFrame filtered for IT Department:")
print(df_it)
print()

# Task c) Calculate the average salary of employees in the "Finance" department
average_salary_finance = df[df['department'] == 'Finance']['salary'].mean()
print("Average Salary of Employees in Finance Department:", average_salary_finance)
print()

# Task d) Add a new column called "Bonus" and calculate the bonus amount for each employee (10% of the salary)
df['Bonus'] = df['salary'] * 0.1
print("DataFrame with Bonus Column:")
print(df)

This is a dataset containing information about students and their exam scores. Convert the following data to a DataFrame and perform the following tasks:

data = {'names': ['John', 'Sarah', 'Michael', 'Emma', 'Daniel', 'Emily'],
        'math_score': [85, 92, 78, 88, 90, 83],
        'science_score': [90, 88, 92, 85, 80, 94],
        'english_score': [75, 82, 80, 88, 85, 90]}

a) Calculate the total score for each student by summing their scores in all subjects. b) Sort the DataFrame based on the "math_score" column in descending order. c) Calculate the average score for each subject. d) Add a new column to the DataFrame called "Pass" and set the value to "Yes" if the student's average score is above 80, and "No" otherwise.

# Convert data to a DataFrame
df = pd.DataFrame(data)

# Task a) Calculate the total score for each student
df['total_score'] = df[['math_score', 'science_score', 'english_score']].sum(axis=1)
print("Total Score for Each Student:")
print(df)
print()

# Task b) Sort the DataFrame based on the "math_score" column in descending order
df_sorted = df.sort_values('math_score', ascending=False)
print("Sorted DataFrame based on Math Score:")
print(df_sorted)
print()

# Task c) Calculate the average score for each subject
average_scores = df[['math_score', 'science_score', 'english_score']].mean()
print("Average Score for Each Subject:")
print(average_scores)
print()

# Task d) Add a new column called "Pass" and set the value to "Yes" if the student's average score is above 80, and "No" otherwise
df['Pass'] = np.where(df[['math_score', 'science_score', 'english_score']].mean(axis=1) > 80, 'Yes', 'No')
print("DataFrame with Pass Column:")
print(df)
Sarah111-AHM commented 1 year ago

sec (5.1) : Introduction to pandas Data Structures : بنك الاسئلة :

Which of the following libraries is often used in tandem with pandas for numerical computing? a. NumPy b. SciPy c. statsmodels d. matplotlib

What is the main difference between pandas and NumPy? a. pandas is designed for working with tabular data, while NumPy is best suited for numerical array data. b. pandas is designed for working with homogeneous data, while NumPy is best suited for heterogeneous data. c. pandas is a smaller library compared to NumPy. d. NumPy provides more advanced data cleaning and analysis tools compared to pandas.

How would you import pandas in your code using the common import convention? a. import pandas as p b. import pandas as pd c. import pd as pandas d. from pandas import *

Which pandas data structure is a one-dimensional array-like object with an associated index? a. Series b. DataFrame c. Array d. Index

How can you access a single value or a set of values in a Series using labels from the index? a. By using the get() method b. By using the loc attribute c. By using the values attribute d. By using the iloc attribute

Which method is used to create a Series with a specified index? a. set_index() b. create_series() c. set_values() d. No specific method is required; the index can be specified directly during Series creation.

Which method is used to check for missing or NA values in a Series? a. isna() b. isnan() c. isnull() d. missing()

What happens when performing arithmetic operations between two Series objects with different indexes? a. An error is raised due to incompatible indexes. b. The operation is performed only on the common index values. c. The indexes are automatically aligned, and missing values are filled with NaN. d. The operation is not allowed between Series objects.

How would you create a DataFrame from a dict of equal-length lists? a. DataFrame.from_dict() b. DataFrame.create() c. pd.DataFrame.from_dict() d. pd.DataFrame.create()

How can you retrieve a column from a DataFrame? a. By using the column name as an attribute of the DataFrame object. b. By using the column name within square brackets []. c. By using the get_column() method. d. By using the column() attribute. الحلول للأسئلة:

a. NumPy

a. pandas is designed for working with tabular data, while NumPy is best suited for numerical array data.

b. import pandas as pd

a. Series

b. By using the loc attribute

d. No specific method is required; the index can be specified directly during Series creation.

c. isnull()

c. The indexes are automatically aligned, and missing values are filled with NaN.

c. pd.DataFrame.from_dict()

b. By using the column name within square brackets [].

What are the data infrastructures in pandas that we should be comfortable working with? a. Arrays b. Series c. DataFrames d. Tensors

What is the main difference between pandas and NumPy regarding the data types they can handle? a. pandas only works with numerical data. b. NumPy only works with heterogeneous data. c. pandas works with tabular or heterogeneous data. d. NumPy works with tabular or heterogeneous data.

What is the main purpose of using class "Series" in pandas? a. Store high-dimensional arrays. b. Organize data in a levels structure. c. Improve data processing. d. Provide an interface to store data in databases.

What is the difference between using default numbering and assigning custom numbering to items in the "Series" category? a. There is no difference in use. b. Default numbering is assigned automatically, while custom numbering can be specified. c. Default numbering can be specified, while custom numbering is assigned automatically. d. Items use numbers for the default numbering, while custom numbering is specified using the hottest

Sarah111-AHM commented 1 year ago

a. NumPy و SciPy

الأدوات الرئيسية في مكتبة pandas هي:

NumPy: تستخدم pandas NumPy كأساس لتنفيذ العمليات العددية والتعامل مع البيانات المتجهية. Matplotlib: تستخدم لرسم الرسوم البيانية والتصورات البيانية. جميع ما ذكر: يمكن استخدام جميع هذه الأدوات معًا في مشروع pandas. الاختلافات الرئيسية بين pandas و NumPy هي:

هيكل البيانات: NumPy يقدم هيكل بيانات متجانس متعدد الأبعاد (مصفوفات)، في حين أن pandas توفر هيكل بيانات متعدد الأبعاد غير متجانس (DataFrame) يمكن أن يحتوي على أنواع بيانات مختلفة. التعامل مع البيانات: NumPy يركز على العمليات العددية والتحليل العددي، بينما تركز pandas على التحليل والتلاعب بالبيانات بشكل شامل، بما في ذلك العمليات الإحصائية والتنظيم والتجميع وتحويل البيانات. القدرة على التعامل مع البيانات المفقودة: pandas تقدم وظائف مدمجة للتعامل مع البيانات المفقودة وتعويضها، في حين أن NumPy لا يوفر هذه القدرة. هياكل البيانات الرئيسية في pandas هي:

Series: تُستخدم لتخزين البيانات المرتبطة بأبعاد واحدة، وهي تعبير عن مجموعة من القيم مع فهرس مرتبط بها. DataFrame: يُستخدم لتخزين البيانات المرتبطة بعدة أبعاد، ويعتبر هيكل بيانات ذو بعدين (صفوف وأعمدة) مماثل لجدول قاعدة البيانات. الهياكل التي يمكن استخدامها لتخزين البيانات ذات الأبعاد الواحدة في pandas هي:

Series يمكن إنشاء Series في pandas بواسطة استخدام الدالة pd.Series() وتمرير قائمة (List) أو مصفوفة (Array) كوسيطة للقيم. على سبيل المثال:

kotlin Copy code import pandas as pd

data = [10, 20, 30, 40, 50] series = pd.Series(data) الفرق بين Series و NumPy arrays هو:

Series يحتوي على بيانات مرتبطة بفهرس (Index)، بينما NumPy arrays لا يحتوي على هذا الفهرس. Series يوفر وظائف إضافية للتعامل مع البيانات المفقودة وتعويضها. Series يوفر وظائف مدمجة للتلاعب بالبيانات وتحليلها، بينما NumPy يركز بشكل أساسي على العمليات العددية. يمكن استخدام الفهرس في Series للوصول إلى القيم والتلاعب بها. يمكن استخدام الفهرس لتحديد قيم فردية أو مجموعة قيم. على سبيل المثال:

perl Copy code import pandas as pd

data = [10, 20, 30, 40, 50] index = ['a', 'b', 'c', 'd', 'e'] series = pd.Series(data, index=index)

الوصول إلى قيمة فردية باستخدام الفهرس

value = series['a']

الوصول إلى مجموعة قيم باستخدام الفهرس

subset = series[['a', 'b', 'c']] يمكن استخدام دوال NumPy في Series بشكل مباشر، حيث يتم تطبيق هذه الدوال على كل قيمة في السلسلة. على سبيل المثال:

kotlin Copy code import pandas as pd import numpy as np

data = [10, 20, 30, 40, 50] series = pd.Series(data)

استخدام دالة NumPy لتطبيق العملية العددية على القيم في Series

result = np.square(series) استخدام شائع لـ Series في pandas هو لتمثيل البيانات المرتبطة بأبعاد واحدة مثل سلاسل زمنية (Time Series) أو سلاسل البيانات المرتبطة بعمود واحد في DataFrame.

يمكن إنشاء DataFrame في pandas بواسطة استخدام الدالة pd.DataFrame() وتمرير بيانات متعددة الأبعاد كوسيطة. يمكن تمرير قائمة (List) من القوائم (Lists) أو قاموس (Dictionary) أو مصفوفة (Array) وغيرها. على سبيل المثال:

kotlin Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'City': ['New York', 'London', 'Paris']}

df = pd.DataFrame(data) عملية يمكن أن تعتبر DataFrame مشابهة لها في قواعد البيانات هي عملية الاستعلام (Querying) والتحليل الشامل للبيانات المخزنة فيه.

يمكن الوصول إلى أعمدة DataFrame باستخدام الفهرس عن طريق توفير اسم العمود كمفتاح للفهرس. على سبيل المثال:

kotlin Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'City': ['New York', 'London', 'Paris']}

df = pd.DataFrame(data)

الوصول إلى عمود "Name"

column = df['Name'] يمكن استخدام الفهرس للوصول إلى صفوف DataFrame باستخدام الدالة loc[] وتمرير الفهرس المراد الوصول إليه. على سبيل المثال:

kotlin Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'City': ['New York', 'London', 'Paris']}

df = pd.DataFrame(data)

الوصول إلى صف الفهرس 0

row = df.loc[0] يمكن تعديل قيم الأعمدة في DataFrame عن طريق توفير العمود والقيمة المراد تعديلها. على سبيل المثال:

kotlin Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'City': ['New York', 'London', 'Paris']}

df = pd.DataFrame(data)

تعديل قيمة العمود "Age" في الصف الأول

df.loc[0, 'Age'] = 32 يمكن إضافة عمود جديد في DataFrame عن طريق تعيين قيم لعمود جديد باستخدام الفهرس. على سبيل المثال:

kotlin Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'City': ['New York', 'London', 'Paris']}

df = pd.DataFrame(data)

إضافة عمود "Country" بقيمة ثابتة

df['Country'] = 'USA' يمكن حذف عمود من DataFrame باستخدام الدالة drop() وتحديد اسم العمود ومحور الحذف (axis=1 للعمود). على سبيل المثال:

kotlin Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'City': ['New York', 'London', 'Paris']}

df = pd.DataFrame(data)

حذف العمود "City"

df = df.drop('City', axis=1) يمكن استخدام العمليات الحسابية على أعمدة DataFrame بشكل مباشر، حيث يتم تطبيق العمليات الحسابية على كل قيمة في العمود. على سبيل المثال:

kotlin Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'Height': [180, 165, 170]}

df = pd.DataFrame(data)

ضرب قيم العمود "Height" بعامل

df['Height'] = df['Height'] * 0.01 استخدام شائع لـ DataFrame في pandas هو لتخزين وتحليل البيانات الهيكلية المتعددة الأبعاد، مثل بيانات المشروعات، البيانات المالية، البيانات الزمنية، وأكثر.

الفرق بين loc و iloc في pandas هو:

loc يستخدم للوصول إلى الصفوف والأعمدة باستخدام الفهرس (Index) المحدد بواسطة الأسماء. iloc يستخدم للوصول إلى الصفوف والأعمدة باستخدام الفهرس (Index) المحدد بواسطة الموقع (الفهرس العددي). بشكل عام، إذا كان لديك DataFrame مع فهرس (Index) افتراضي، فإنك يمكن أن تستخدم loc و iloc بنفس الطريقة. ومع ذلك، إذا قمت بتعيين فهرس مخصص للصفوف، فيجب استخدام loc للوصول إليها باستخدام الأسماء. على سبيل المثال:

javascript Copy code import pandas as pd

data = {'Name': ['John', 'Emily', 'Kate'], 'Age': [30, 25, 35], 'City': ['New York', 'London', 'Paris']}

df = pd.DataFrame(data) df.index = ['a', 'b', 'c']

الوصول إلى صف الفهرس "a" باستخدام loc

row_a = df.loc['a']

الوصول إلى صف الفهرس الأول بواسطة الموقع باستخدام iloc

row_0 = df.iloc[0]