Professional Documents
Culture Documents
علم البيانات عن طريق الامثلة 40 مشروع علم بيانات تم حلها وشرحها باستخدام بايثون
علم البيانات عن طريق الامثلة 40 مشروع علم بيانات تم حلها وشرحها باستخدام بايثون
بسمه تعالى
ترجمة واعداد:
د .عالء طعيمة
تعد البيانات اليوم أداة ووقودًا للشركات الكتساب رؤى مهمة وتحسين أدائها .سيطر علم
البيانات على كل صناعة تقريبًايف العالم .ال توجد صناعةيف العالم اليوم ال تستخدم البيانات.
بصفتك مبتدئًايف علم البيانات ،من الصعب فهم جميع المفاهيم التي تتعلمها دون تنفيذهايف
مجموعة بيانات .سيساعدك العمليف مشاريع علم البيانات ودراسات الحالة على تحسين
مهاراتكيف علم البيانات .إذا كنت تكافح من أجل ابتكار أفكار لمشروع علم البيانات وكيفية بدء
مشروع علم البيانات وإنهائه ،فهذا الكتاب مناسب لك.يف هذه الكتاب ،سوف يأخذك المؤلف
من خالل قائمة مشاريع علم البيانات باستخدام بايثون والتي ستساعدك على تعلم وتنفيذ جميع
مفاهيم علم البيانات باستخدام لغة برمجة بايثون.
لقد حاولت قدر المستطاع ان اترجم المشاريع األكثر طرحاًيف مجال علم البيانات مع الشرح
المناسب والكافي ،ومع هذا يبقى عمالً بشرياً يحتمل النقص ،فاذا كان لديك أي مالحظات حول
هذا الكتاب ،فال تتردد بمراسلتنا عبر بريدنا االلكتروني . alaa.taima@qu.edu.iq
نأمل ان يساعد هذا الكتاب كل من يريد ان يدخليف مجاالت علم البيانات ومساعدة القارئ
العربي على تعلم هذا المجال .اسأل الله التوفيقيف هذا العمل ألثراء المحتوى العربي الذي يفتقر
أشد االفتقار إلى محتوى جيد ورصينيف مجال علم البيانات .ونرجو لك االستمتاع مع الكتاب
وال تنسونا من صالح الدعاء.
جامعة القادسية
العراق
12 Weather Forecasting using Python 1
12
12
15
16
17
Screen Time Analysis using Python 2
18
18
19
21
Stock Market Analysis using Python 3
22
22
26
Business Forecasting using Python 4
27
27
27
31
News Recommendation System using 5
32 Python
32
32
35
iPhone Sales Analysis using iPhone 6
36 Python
36 iPhone
37 iPhone
40
Flipkart Sale Analysis using Flipkart 7
42 Python
42 Flipkart
42 Flipkart
45 Flipkart
46
Diamond Price Analysis using 8
47 Python
47
47
51
52
Netflix Recommendation System Netflix 9
53 using Python
53 Netflix
53 Netflix
57
Website Traffic Forecasting 10
58 using Python
58
63
Restaurant Recommendation 11
64 System using Python
64
66
Virat Kohli Performance Virat Kohli 12
67 Analysis using Python
67 Virat Kohli
68 Virat Kohli
75
Book Recommendation System 13
76 using Python
76
78
Smartwatch Data Analysis 14
79 using Python
79
82
86
87 IPL 2022 Analysis using Python IPL 2022 15
87 IPL 2022
92
Covid-19 Impacts Analysis Covid-19 16
93 using Python
93 Covid-19
94 Covid-19
94
98 Covid-19
101 Covid-19
104
Instagram Reach Instagram 16
105 Analysis using Python
105 Instagram
105 Instagram
107 Instagram
109
111
113
114 Instagram
115
Tinder Reviews Tinder 17
116 Sentiment Analysis using Python
116 Tinder
120
TikTok Reviews TikTok 18
121 Sentiment Analysis using Python
121 TikTok
125
Ukraine 19
126 Russia War Twitter Sentiment Analysis using Python
126
131
Flipkart Reviews Flipkart 20
132 Sentiment Analysis using Python
132 Flipkart
133 Flipkart
135
Pfizer Vaccine Sentiment 21
136 Analysis using Python
136
140
Omicron Omicron 22
141 Sentiment Analysis using Python
141 Omicron
142 Omicron
144
Water Quality Analysis using python 23
145
145
145
151
152
Twitter Sentiment Analysis Twitter 24
153 using Python
153 Twitter
153 Twitter
156
Squid Game Sentiment 25
157 Analysis using Python
157
160
Movie Rating Analysis using 26
161 Python
161
164
165 Billionaires Analysis with Python 27
165
169
170 Unemployment Analysis with Python 28
170
171
173
WhatsApp Chat Analysis with WhatsApp 29
174 Python
174 WhatsApp
175 WhatsApp
180
WhatsApp Chat WhatsApp 30
181 Sentiment Analysis using Python
181 WhatsApp
182 WhatsApp
184
Covid-19 Vaccines Analysis Covid-19 32
185 with Python
185 Covid-19
185 Covid-19
189
Video Game Sales 33
190 Prediction with Python
190
192
192
Uber Trips Analysis using Python Uber 34
193
193 Uber
193 Uber
196
Google Search Analysis with Google 35
198 Python
198 Google
200
Financial Budget Analysis with Python 36
201
201
201
204
Best Streaming Service 37
205 Analysis with Python
205
205
206
207
208
Birth Rate Analysis with python 38
210
211
Amazon Amazon 39
213 Product Reviews Sentiment Analysis with Python
213 Amazon
214 Amazon
216
Hotel Reviews Sentiment 40
217 Analysis with Python
217
219
Google Play Store Google Play 41
220 Sentiment Analysis using Python
220 Google Play
220 Google Play
222
Amazon Alexa Amazon Alexa 42
223 Reviews Sentiment Analysis using Python
223 Amazon Alexa
225 Amazon Alexa
226
Amazon Recommendation Amazon 43
227 System using Python
227 Amazon
227 Amazon
229
12
Weather 1
Forecasting using Python
في علم البيانات ( ،)Data Scienceالتنبؤ بالطقس هو تطبيق للتنبؤ بالسالسل الزمنية ( Time
)Series Forecastingحيث نستخدم بيانات وخوارزميات السالسل الزمنية لعمل تنبؤات
لوقت معين .إذا كنت تريد معرفة كيفية التنبؤ بالطقس باستخدام مهاراتكيف علم البيانات ،فهذه
المقالة مناسبة لك.يف هذه المقالة ،سوف آخذك خالل مهمة التنبؤ بالطقس ( weather
)forecastingباستخدام بايثون.
التنبؤ بالطقس هو مهمة التنبؤ بأحوال الطقس لموقع ووقت معين .باستخدام بيانات وخوارزميات
الطقس ،من الممكن التنبؤ بأحوال الطقس لعدد nمن األيام القادمة.
للتنبؤ بالطقس باستخدام بايثون ،نحتاج إلى مجموعة بيانات تحتوي على بيانات الطقس
التاريخية بناءً على موقع معين .لقد وجدت مجموعة بيانات على Kaggleاستنادًا إلى بيانات
الطقس اليوميةيف نيودلهي .يمكننا استخدام مجموعة البيانات هذه لمهمة التنبؤ بالطقس .يمكنك
تنزيل مجموعة البيانات من هنا.
في القسم أدناه ،ستتعلم كيف يمكننا تحليل الطقس والتنبؤ به باستخدام بايثون.
اآلن لنبدأ هذه المهمة عن طريق استيراد مكتبات بايثون ومجموعة البيانات التي نحتاجها:
)”data = pd.read_csv("DailyDelhiClimateTrain.csv
))(print(data.head
دعونا نلقي نظرة على اإلحصائيات الوصفية لهذه البيانات قبل المضي قدمًا:
))(print(data.describe
13
دعنا اآلن نلقي نظرة على المعلومات المتعلقة بجميع األعمدةيف مجموعة البيانات:
))(print(data.info
ال يحتوي عمود التاريخ ( )date columnيف مجموعة البيانات هذه على نوع بيانات التاريخ
والوقت .سنقوم بتغييره عند الحاجة .دعونا نلقي نظرة على متوسط درجة الحرارة ( mean
)temperatureيف دلهي على مر السنين:
figure = px.line(data, x="date",
y="meantemp",
title='Mean Temperature in Delhi Over the
)'Years
)(figure.show
14
:)يف دلهي على مر السنينhumidity( اآلن دعونا نلقي نظرة على الرطوبة
figure = px.line(data, x="date ,"
y="humidity ,"
title='Humidity in Delhi Over the Years)'
figure.show)(
:)يف دلهي على مر السنينwind speed( اآلن دعونا نلقي نظرة على سرعة الرياح
figure = px.line(data, x="date ,"
y="wind_speed ,"
title='Wind Speed in Delhi Over the Years)'
figure.show)(
كانت سرعة الرياح أعلى خالل الرياح الموسمية (أغسطس وسبتمبر) وتراجع،2015 حتى عام
لم تكن هناك حاالت شاذةيف سرعة الرياح،2015 بعد عام.)الرياح الموسمية (ديسمبر ويناير
: دعنا اآلن نلقي نظرة على العالقة بين درجة الحرارة والرطوبة.خالل الرياح الموسمية
هناك عالقة سلبية بين درجة الحرارة والرطوبةيف دلهي .وهذا يعني أن ارتفاع درجة الحرارة يؤدي
إلى انخفاض الرطوبة وانخفاض درجة الحرارة يؤدي إلى ارتفاع نسبة الرطوبة.
اآلن دعونا نحلل التغيريف درجة الحرارةيف دلهي على مر السنين .بالنسبة لهذه المهمة ،سأقوم أوالً
بتحويل نوع بيانات عمود التاريخ إلى التاريخ والوقت .ثم سأضيف عمودين جديدينيف مجموعة
البيانات لقيم السنة والشهر.
إليك كيفية تغيير نوع البيانات واستخراج بيانات السنة والشهر من عمود التاريخ:
اآلن دعونا نلقي نظرة على تغير درجة الحرارةيف دلهي على مر السنين:
)'plt.style.use('fivethirtyeight
))plt.figure(figsize=(15, 10
)"plt.title("Temperature Change in Delhi Over the Years
)'sns.lineplot(data = data, x='month', y='meantemp', hue='year
()plt.show
16
على الرغم من أن عام 2017لم يكن األكثر سخونةيف الصيف ،يمكننا أن نرى ارتفاعًايف متوسط
درجة حرارة دلهي كل عام.
اآلن دعنا ننتقل إلى مهمة التنبؤ بالطقس .سأستخدم نموذج ( )Facebook prophetلهذه
المهمة .يعد نموذج Facebook prophetأحد أفضل التقنيات للتنبؤ بالسالسل الزمنية .إذا لم
تستخدم هذا النموذج من قبل ،فيمكنك تثبيته على نظامك باستخدام األمر المذكور أدناهيف موجه
األوامر أو التيرمينال:
اآلن فيما يلي كيفية استخدام نموذج Facebook prophetللتنبؤ بالطقس باستخدام بايثون:
17
هذه هي الطريقة التي يمكنك من خاللها تحليل الطقس والتنبؤ به باستخدام بايثون.
التنبؤ بالطقس هو مهمة التنبؤ بأحوال الطقس لموقع ووقت معين .باستخدام بيانات وخوارزميات
الطقس ،من الممكن التنبؤ بأحوال الطقس لعدد nمن األيام القادمة .أتمنى أن تكون قد أحببت
هذه المقالة حول تحليل الطقس والتنبؤ باستخدام بايثون.
18
تحليل وقت الشاشة هو مهمة تحليل وإنشاء تقرير عن التطبيقات والمواقع التي يستخدمها
المستخدم عن مقدار الوقت .تتمتع أجهزة Appleبواحدة من أفضل الطرق إلنشاء تقرير وقت
الشاشة.
بالنسبة لمهمة تحليل وقت الشاشة ،وجدت مجموعة بيانات مثالية تحتوي على بيانات حول:
التاريخ. •
استخدام التطبيقات. •
عدد االشعارات من التطبيقات. •
عدد مرات فتح التطبيقات. •
في القسم أدناه ،سوف آخذك خالل مهمة تحليل وقت الشاشة باستخدام بايثون.
19
لنبدأ مهمة تحليل وقت الشاشة عن طريق استيراد مكتبات بايثون ومجموعة البيانات الضرورية:
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
دعنا اآلن نلقي نظرة على ما إذا كانت مجموعة البيانات تحتوي على أي قيم فارغة ( null
)valuesأم ال:
()data.isnull().sum
ال تحتوي مجموعة البيانات على أي قيم خالية .دعنا اآلن نلقي نظرة على اإلحصائيات الوصفية
للبيانات:
))(print(data.describe
لنبدأ اآلن بتحليل وقت الشاشة للمستخدم .سأنظر أوالًيف مقدار استخدام التطبيقات:
figure = px.bar(data_frame=data ,
x = "Date ",
y = "Usage ",
color="App ",
20
title="Usage ")
figure.show)(
figure = px.bar(data_frame=data ,
x = "Date ",
y = "Notifications ",
color="App ",
title="Notifications ")
figure.show)(
figure = px.bar(data_frame=data ,
x = "Date ",
y = "Times opened ",
color="App",
title="Times Opened ")
figure.show)(
21
نستخدم بشكل عام هواتفنا الذكية عندما نتلقى إشعارًا من أي تطبيق .فلنلقِ نظرة على العالقة بين
عدد اإلشعارات ومقدار االستخدام:
figure = px.scatter(data_frame = data ,
"x="Notifications,
"y="Usage ,
"size="Notifications ,
"trendline="ols ,
title = "Relationship Between Number of
")Notifications and Usage
()figure.show
هناك عالقة خطية بين عدد اإلشعارات ومقدار االستخدام .هذا يعني أن المزيد من اإلشعارات
يؤدي إلى زيادة استخدام الهواتف الذكية.
هذه هي الطريقة التي يمكننا بها تحليل وقت الشاشة للمستخدم باستخدام لغة برمجة بايثون.
تحليل وقت الشاشة هو مهمة تحليل وإنشاء تقرير عن التطبيقات والمواقع التي يستخدمها
المستخدم عن مقدار الوقت .آمل أن تكون قد أحببت هذه المقالة حول تحليل وقت الشاشة
باستخدام بايثون.
22
Stock 3
Market Analysis using Python
يعني تحليل سوق األسهم ( )Stock Market Analysisتحليل االتجاهات الحالية والتاريخية
في سوق األوراق المالية التخاذ قرارات البيع والشراء المستقبلية .يعد تحليل سوق األوراق المالية
أحد أفضل حاالت استخدام علم البياناتيف التمويل .لذا ،إذا كنت تريد تعلم كيفية تحليل سوق
األوراق المالية ،فهذه المقالة مناسبة لك.يف هذه المقالة ،سأطلعك على مهمة تحليل سوق األسهم
باستخدام بايثون.
لتحليل سوق األسهم ،سأجمع بيانات أسعار أسهم .Googleيف نهاية هذه المقالة ،ستتعلم تحليل
سوق األوراق المالية بشكل تفاعلي باستخدام لغة برمجة بايثون .لنبدأ بجمع بيانات أسعار أسهم
.Googleسأستخدم API yfinanceمن Yahoo Financeلجمع بيانات أسعار األسهم.
يمكنك معرفة المزيد عن APIهنا.
)(today = date.today
)"d1 = today.strftime("%Y-%m-%d
end_date = d1
)d2 = date.today() - timedelta(days=365
)"d2 = d2.strftime("%Y-%m-%d
start_date = d2
data = yf.download('GOOG',
start=start_date,
end=end_date,
)progress=False
data["Date"] = data.index
data = data[["Date", "Open", "High", "Low",
]]""Close", "Adj Close", "Volume
)data.reset_index(drop=True, inplace=True
))(print(data.head
23
كلما قمت بتحليل سوق األسهم ،ابدأ دائمًا بمخطط الشموع ( .)candlestick chartمخطط
الشموع هو أداة مفيدة لتحليل تحركات االسعار ألسعار األسهم .إليك كيفية تصوير مخطط
الشموع ألسعار أسهم :Google
figure = go.Figure(data=[go.Candlestick(x=data["Date"],
open=data["Open"],
high=data["High"],
low=data["Low"],
)])]"close=data["Close
figure.update_layout(title = "Google Stock Price Analysis",
)xaxis_rangeslider_visible=False
)(figure.show
المخطط الشريطي ( )bar plotهو أيضًا تصوير مفيد لتحليل سوق األوراق المالية ،على وجه
التحديد على المدى الطويل .إليك كيفية تصوير أسعار إغالق أسهم Googleباستخدام مخطط
شريطي:
يعد شريط تمرير النطاق ( )range sliderأحد األدوات القيمة لتحليل سوق األوراق المالية.
يساعدك على تحليل سوق األوراق المالية بين نقطتين محددتين من خالل تحديد الفترة الزمنية
بشكل تفاعلي .إليك كيفية إضافة شريط تمرير النطاق لتحليل سوق األسهم:
استخدم شريط تمرير النطاق لتحليل سوق األوراق المالية بشكل تفاعلي بين نقطتين
ميزة تفاعلية أخرى يمكنك إضافتها لتحليل سوق األسهم هي محددات الفترة الزمنية ( time
.)period selectorsمحددات الفترة الزمنية هي مثل األزرار التي تعرض لك الرسم البياني
لفترة زمنية محددة .على سبيل المثال ،سنة ،ثالثة أشهر ،ستة أشهر ،إلخ .إليك كيفية إضافة أزرار
الختيار الفترة الزمنية لتحليل سوق األسهم:
(figure.update_xaxes
(rangeselector=dict
([buttons=list
dict(count=1, label="1m", step="month",
stepmode="backward"),
25
لذلك إذا كنت ترغب.تؤثر عطلة نهاية األسبوع أو موسم العطالت دائمًا على سوق األوراق المالية
،في إزالة جميع سجالت اتجاهات عطلة نهاية األسبوع من تصوير سوق األسهم الخاص بك
:فيما يلي كيف يمكنك القيام بذلك
هذه هي الطريقة التي يمكنك بها تحليل سوق األسهم باستخدام بايثون .إذا كنت تريد معرفة كيفية
التنبؤ بسوق األوراق المالية ،فيمكنك التعلم هنا.
هذه هي الطريقة التي يمكنك بها استخدام لغة برمجة بايثون لتحليل سوق األوراق المالية بشكل
تفاعلي .يعني تحليل سوق األسهم تحليل االتجاهات الحالية والتاريخيةيف سوق األوراق المالية
التخاذ قرارات البيع والشراء المستقبلية .آمل أن تكون قد أحببت هذه المقالة حول تحليل سوق
األسهم باستخدام بايثون.
27
Business 4
Forecasting using Python
يعد التنبؤ باألعمال التجارية ( )Business Forecastingأحد تطبيقات التنبؤ بالسالسل الزمنية
(.)Time Series Forecastingيف تنبؤات األعمال التجارية ،نهدف إلى التنبؤ بالمبيعات أو
النفقات أو اإليرادات المستقبلية باستخدام بيانات السالسل الزمنية التاريخية التي تم إنشاؤها
بواسطة الشركة .لذا ،إذا كنت تريد معرفة كيفية إجراء التنبؤ باألعمال التجارية ،فهذه المقالة مناسبة
لك.يف هذه المقالة ،سوف آخذك خالل مهمة التنبؤ باألعمال باستخدام بايثون.
تبحث كل شركة عن استراتيجيات لتحسين أرباحها .يلعب متخصصو علم البيانات دورًا رئيسيًا
في توفير أكثر التنبؤات دقةيف أي وقت .دائمًا ما تكون البيانات التي يتم إنشاؤها من قبل الشركة
في متناول اليد لتحليل السلوك المستقبلي للعمالء المستهدفين .من خالل التنبؤ باتجاهات
األعمال المستقبلية ،يمكن للشركة اتخاذ قرارات أفضل لتحسين أدائهايف المستقبل.
آمل أن تكون قد فهمت سبب احتياج الشركة اليوم إلى استخدام تقنيات التنبؤ باألعمال .التنبؤ
بالمبيعات أو اإليرادات أو النفقات هي بعض حاالت استخدام التنبؤ باألعمال التجارية .لذلك،
في القسم أدناه ،سوف آخذك خالل مهمة التنبؤ باألعمال التجارية حيث سنهدف إلى توقع
اإليرادات الفصلية لشركة .Adidasيتم جمع البيانات التي أستخدمها لهذه المهمة يدويًا من
تقارير المبيعات ربع السنوية من .Adidasيمكنك تنزيل مجموعة البيانات من هنا.
لنبدأ بمهمة التنبؤ باألعمال التجارية عن طريق استيراد مكتبات بايثون ومجموعة البيانات
الضرورية:
تعد بيانات إيرادات المبيعات الخاصة بشركة Adidasموسمية حيث تزيد اإليرادات الفصلية
وتنخفض كل ربع سنة .فيما يلي كيفية التحقق من موسمية أي بيانات سالسل زمنية:
نظرًا ألن البيانات ليست ثابتة ( ،)not stationaryفإن قيمة dهي .1للعثور على قيم pو ،q
يمكننا استخدام مخططات االرتباط التلقائي ( )autocorrelationواالرتباط التلقائي الجزئي
(:)partial autocorrelation plots
)]"pd.plotting.autocorrelation_plot(data["Revenue
:Adidas للتنبؤ باإليرادات ربع السنوية لشركةSARIMA اآلن إليك كيفية تدريب نموذج
model=sm.tsa.statespace.SARIMAX(data['Revenue"],
order=(p, d, q),
seasonal_order=(p, d, q, 12))
model=model.fit)(
print(model.summary())
: لألرباع الثمانية القادمةAdidas اآلن دعونا نتوقع اإليرادات ربع السنوية لشركة
)print(predictions
هذه هي الطريقة التي يمكنك بها إجراء التنبؤ باألعمال التجارية باستخدام لغة برمجة بايثون.يف
تنبؤات األعمال التجارية ،نهدف إلى التنبؤ بالمبيعات أو النفقات أو اإليرادات المستقبلية
باستخدام بيانات السالسل الزمنية التاريخية التي تم إنشاؤها بواسطة الشركة .أتمنى أن تكون قد
أحببت هذه المقالة حول التنبؤ باألعمال التجارية باستخدام بايثون.
32
News 5
Recommendation System using Python
نظام التوصية ( )recommendation systemهو تطبيق شائع لعلم البيانات .تستخدم جميع
مواقع الويب الشهيرة التي تزورها تقريبًا أنظمة التوصية .كما يوحي االسم ،فإن نظام التوصية
باألخبار ( )news recommendation systemهو تطبيق يوصي بالمقاالت اإلخبارية بناءً
على األخبار التي يقرأها المستخدم بالفعل .لذلك ،إذا كنت تريد معرفة كيفية إنشاء نظام توصيات
األخبار ،فهذه المقالة مناسبة لك.يف هذه المقالة ،سوف أطلعك على كيفية إنشاء نظام توصيات
أخبار باستخدام بايثون.
عندما تزور أي موقع ويب ،فإنه يوصي بمحتوى مشابه بناءً على ما تشاهده أو تقرأه بالفعل .تعتبر
توصية المحتوى بناءً على المحتوى الذي يستهلكه المستخدم بالفعل تقنية إلنشاء نظام توصية
يُعرف باسم التصفية القائمة على المحتوى (.)Content-based filtering
تستخدم جميع مواقع الويب اإلخبارية الشهيرة أنظمة توصية قائمة على المحتوى مصممة للعثور
على أوجه التشابه بين األخبار التي تقرأها والمقاالت اإلخبارية األخرى على موقعها على الويب
للتوصية بالمقاالت اإلخبارية األكثر تشابهًا.
أتمنى أن تكون قد فهمت اآلن كيف يعمل نظام توصية األخبار.يف القسم أدناه ،سوف أطلعك على
كيفية إنشاء نظام توصيات األخبار باستخدام لغة برمجة بايثون.
مجموعة البيانات التي أستخدمها إلنشاء نظام توصيات األخبار مأخوذة من .Microsoftنظرًا
ألن البيانات كانت بحاجة إلى الكثير من التنظيف واإلعداد ،فقد قمت بتنزيل البيانات وأعدتها
إلنشاء نظام توصية قائم على المحتوى .يمكنك تنزيل مجموعة البيانات هنا (يُرجى تنزيل
البيانات بتنسيق .)CSV
لنبدأ اآلن باستيراد مكتبات بايثون الضرورية ومجموعة البيانات التي نحتاجها لبناء نظام توصية
باألخبار:
import numpy as np
import pandas as pd
from sklearn.feature_extraction import text
from sklearn.metrics.pairwise import cosine_similarity
import plotly.express as px
import plotly.graph_objects as go
33
)"data = pd.read_csv("News.csv
))(print(data.head
.2الطريقة األخرى هي استخدام العنوان أو الملخص كميزة للعثور على أوجه التشابه.
ستقدم توصيات أكثر دقة ألن المحتوى الموصى به سيعتمد على المحتوى الذي يقرأه
المستخدم بالفعل.
لذلك يمكننا استخدام العنوان ( )titleأو ملخص ( )summaryالمقال اإلخباري للعثور على
أوجه التشابه مع المقاالت اإلخبارية األخرى .هنا سأستخدم عمود العنوان .إذا كنت ترغبيف
استخدام عمود الملخص ،فقم أوالً بإسقاط الصفوف ذات القيم الخالية ( ،)null valuesحيث
يحتوي عمود الملخص على أكثر من 5000قيمة فارغة.
فيما يلي كيف يمكننا إيجاد أوجه التشابه بين المقاالت اإلخبارية عن طريق تحويل نصوص عمود
العنوان إلى متجهات رقمية ثم إيجاد أوجه التشابه بين المتجهات العددية باستخدام خوارزمية
تشابه جيب التمام (:)cosine similarity algorithm
)(feature = data["Title"].tolist
tfidf = text.TfidfVectorizer(input=feature,
)"stop_words="english
)tfidf_matrix = tfidf.fit_transform(feature
)similarity = cosine_similarity(tfidf_matrix
اآلن سأقوم بتعيين عمود العنوان كفهرس للبيانات حتى نتمكن من البحث عن توصيات المحتوى
من خالل إعطاء العنوان كمدخل:
indices = pd.Series(data.index,
()index=data['Title']).drop_duplicates
اآلن فيما يلي كيفية إنشاء نظام توصيات األخبار:
هذه هي الطريقة التي يمكنك بها إنشاء نظام توصية باألخبار باستخدام لغة برمجة بايثون.
تستخدم جميع مواقع الويب اإلخبارية الشهيرة أنظمة توصية قائمة على المحتوى مصممة للعثور
على أوجه التشابه بين األخبار التي تقرأها والمقاالت اإلخبارية األخرى على موقعها على الويب
للتوصية بالمقاالت اإلخبارية األكثر تشابهًا .أتمنى أن تكون قد أحببت هذه المقالة حول كيفية
إنشاء نظام توصية باألخبار باستخدام بايثون.
36
iPhone
بالنسبة لمهمة تحليل مبيعات ،iPhoneقمت بجمع مجموعة بيانات من Kaggleتحتوي على
بيانات حول مبيعات أجهزة iPhoneيف الهند على .Flipkartستكون مجموعة بيانات مثالية
لتحليل مبيعات iPhoneيف الهند .يمكنك تنزيل مجموعة البيانات من هنا.
دعنا اآلن نستورد مكتبات بايثون ومجموعة البيانات الالزمة لبدء مهمة تحليل مبيعات :iPhone
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
)"data = pd.read_csv("apple_products.csv
))(print(data.head
37
قبل المضي قدمًا ،دعنا نلقي نظرة سريعة على ما إذا كانت مجموعة البيانات هذه تحتوي على أي
قيم فارغة ( )null valuesأم ال:
))(print(data.isnull().sum
ال تحتوي مجموعة البيانات على أي قيم خالية .اآلن ،دعنا نلقي نظرة على اإلحصائيات الوصفية
للبيانات:
))(print(data.describe
iPhone
اآلن سوف أقوم بإنشاء إطار بيانات جديد من خالل تخزين جميع البيانات حول أعلى 10أجهزة
iPhoneتصنيفًايف الهند على .Flipkartسيساعد ذلكيف فهم نوع أجهزة iPhoneالتي تحظى
بإعجاب أكبريف الهند:
ascending=False)
highest_rated = highest_rated.head(10)
print(highest_rated['Product Name'])
: األكثر شهرةيف الهندiPhone أجهزة5 يوجد أدناه أهم،وفقًا للبيانات المذكورة أعاله
:Flipkart األعلى تصنيفًا علىiPhone دعنا اآلن نلقي نظرة على عدد تقييمات أجهزة
، (ذهبيAPPLE iPhone 8 Plus يتمتع،) أعالهbar graph( وفقًا للرسم البياني الشريطي
دعنا اآلن نلقي نظرة على عدد.Flipkart جيجابايت) بأكبر عدد من التقييمات على64
:Flipkart األعلى تقييمًا علىiPhone المراجعات ألجهزة
توجد عالقة خطية سالبة بين سعر بيع أجهزة iPhoneوعدد التقييمات .هذا يعني أن أجهزة
iPhoneذات أسعار البيع المنخفضة تُباع أكثريف الهند .دعنا اآلن نلقي نظرة على العالقة بين
نسبة الخصم على أجهزة iPhoneعلى Flipkartوعدد التقييمات:
هناك عالقة خطية بين نسبة الخصم على أجهزة iPhoneعلى Flipkartوعدد التقييمات .هذا
يعني أن أجهزة iPhoneذات الخصومات العالية تُباع أكثريف الهند.
هذه هي الطريقة التي يمكنك بها تحليل مبيعات iPhoneيف الهند باستخدام لغة برمجة بايثون.
بعض النقاط المستفادة من هذه المقالة حول مبيعات iPhoneيف الهند هي:
41
Flipkart
لتحليل بيع ،Flipkart Big Billion Daysبحثت ووجدت مجموعة بيانات مثالية على
. Kaggleتحتوي مجموعة البيانات على جميع المعلومات حول جميع المنتجات المعروضة
للبيع .نظرًا لبدء هذا البيعيف 23سبتمبر ،يمكننا تحليل اليوم األول من البيع حيث تم تقديم
العروض األكثر جاذبيةيف اليوم األول بواسطة .Flipkart
بالنسبة لمهمة تحليل مبيعات ،Flipkartسأختار فقط بيانات البيع على الهواتف الذكيةيف اليوم
األول من بيع .Flipkartيمكنك تنزيل مجموعة البيانات التي أستخدمها لهذه المهمة هنا.
يمكنك أيضًا استخدام مجموعة البيانات الكاملة لبيع Flipkartهنا.
في القسم أدناه ،سأنتقل بك إلى تحليل مبيعات Flipkartمن خالل تحليل العروض على بيع
الهواتف الذكية.
Flipkart
لنبدأ مهمة تحليل بيع Flipkartعن طريق استيراد مكتبات بايثون ومجموعة البيانات الالزمة:
)"data = pd.read_csv("23_09_2022.csv
))(print(data.head
43
.) المذكوريف مجموعة البيانات على قيم سلسلةdiscount column( يحتوي عمود الخصم
Flipkart لذلك سوف أقوم بإنشاء عمود خصم جديد من خالل حساب الخصم الذي تقدمه
:على كل هاتف ذكي
data["Discount"] = (data['original_price'] -
data['offer_price']) / data['original_price'] * 100
يفFlipkart دعنا اآلن نلقي نظرة على أفضل الصفقات على الهواتف الذكية التي تقدمها
:التخفيضات
دعنا اآلن.حتى نتمكن من رؤية المنتجات األعلى تصنيفًا من جميع شرائح األسعاريف هذا البيع
:نلقي نظرة على أغلى صفقات الهواتف الذكيةيف التخفيضات
most_expensive = data.sort_values(by="offer_price",
ascending=False)
deals = most_expensive["name"][:10].value_counts()
label = deals.index
counts = most_expensive["offer_price"][:10].values
colors = ['gold','lightgreen']
fig = go.Figure(data=[go.Pie(labels=label, values=counts)])
fig.update_layout(title_text='Most Expensive Offers in the
Flipkart Big Billion Days Sale')
fig.update_traces(hoverinfo='label+percent', textinfo='value',
textfont_size=30,
marker=dict(colors=colors,
line=dict(color='black', width=3)))
fig.show()
.Apple iPhones جميع العروض باهظة الثمن على الهواتف الذكيةيف البيع كانت على أجهزة
45
Flipkart
يخفض النشاط التجاري سعر المنتج لزيادة بيعه.الخصومات المقدمة هي نفقات األعمال
. الخصم يندرج تحت فئة التكاليف الترويجية.للمنتجات
لذلك دعونا. على الهواتف الذكيةيف اليوم األول من البيعFlipkart نحن نستخدم بيانات بيع
: على الهواتف الذكية فقطيف اليوم األول من البيعFlipkart نحسب تكلفة هذا البيع إلى
دوالرًا23،53،772 على الهواتف الذكية فقط ستكونFlipkart لذا فإن تكلفة الخصم على
.لكمية واحدة فقط من جميع الهواتف الذكية المعروضة للبيع
Flipkart 46
هذه هي الطريقة التي يمكنك بها تحليل مبيعات .Flipkart Big Billion Daysال تتردديف
االستلهام من هذه المقالة لتحليل المزيد من بيع Flipkartعلى مجموعة البيانات الكاملة هنا.
آمل أن تكون قد أحببت هذه المقالة حول تحليل بيع Flipkartباستخدام بايثون.
47
Diamond 8
Price Analysis using Python
الماس ( )diamondهو من أغلى األحجار .يختلف سعر الماس بغض النظر عن الحجم بسبب
العوامل التي تؤثر على سعر الماس .لذلك ،إذا كنت تريد معرفة كيفية استخدام مهاراتكيف علم
البيانات لتحليل سعر الماس والتنبؤ به ،فهذه المقالة مناسبة لك.يف هذه المقالة ،سوف آخذك
خالل مهمة تحليل أسعار الماس والتنبؤ باستخدام لغة برمجة بايثون.
لتحليل سعر الماس وفقًا لخصائصه ،نحتاج أوالً إلى مجموعة بيانات تحتوي على أسعار الماس
بناءً على ميزاتها .لقد وجدت بيانات مثالية على Kaggleتحتوي على معلومات حول الماس
مثل:
.1القيراط (.)Carat
.2القطع (.)Cut
.3اللون (.)Colour
.4الوضوح (.)Clarity
.5العمق (.)Depth
.6الجدول (.)Table
.7السعر (.)Price
.8الحجم (.)Size
يمكنك تنزيل مجموعة البيانات هذه من هنا.يف القسم أدناه ،سوف آخذك خالل مهمة تحليل
سعر الماس باستخدام بايثون.
لنبدأ مهمة تحليل أسعار الماس من خالل استيراد مكتبات بايثون ومجموعة البيانات الالزمة:
)"data = pd.read_csv("diamonds.csv
))(print(data.head
48
تحتوي مجموعة البيانات هذه على عمود بدون اسم .Unnamed columnسأحذف هذا
العمود قبل االنتقال إلى أبعد من ذلك:
)data = data.drop("Unnamed: 0",axis=1
لنبدأ اآلنيف تحليل أسعار الماس .سأحلل أوالً العالقة بين القيراط وسعر الماس ألرى كيف يؤثر
عدد القيراط على سعر الماس:
يمكننا أن نرى عالقة خطية بين عدد قيراط وسعر الماس .هذا يعني أن القيراط األعلى يؤدي إلى
ارتفاع األسعار.
سأضيف اآلن عمودًا جديدًا إلى مجموعة البيانات هذه عن طريق حساب حجم الماس (الطول
× العرض × العمق):
print(data)
:دعنا اآلن نلقي نظرة على العالقة بين حجم الماس وسعره
دعنا اآلن نلقي نظرة على أسعار جميع أنواع الماس بناءً على لونها:
دعنا اآلن نلقي نظرة على أسعار جميع أنواع الماس بناءً على وضوحها:
دعنا اآلن نلقي نظرة على العالقة بين أسعار الماس والميزات األخرىيف مجموعة البيانات:
()correlation = data.corr
))print(correlation["price"].sort_values(ascending=False
اآلن ،سأنتقل إلى مهمة التنبؤ بأسعار الماس باستخدام جميع المعلومات الضرورية من تحليل
سعر الماس الذي تم إجراؤه أعاله.
قبل المضي قدمًا ،سأقوم بتحويل قيم عمود القطع ( )cut columnحيث أن نوع قطع الماس
هو ميزة قيمة للتنبؤ بسعر الماس .الستخدام هذا العمود ،نحتاج إلى تحويل قيمه الفئوية
( )categorical valuesإلى قيم عددية ( .)numerical valuesفيما يلي كيف يمكننا تحويلها
إلى ميزة عددية:
#splitting data
from sklearn.model_selection import train_test_split
)]]"x = np.array(data[["carat", "cut", "size
)]]"y = np.array(data[["price
هذه هي الطريقة التي يمكنك بها استخدام مهاراتكيف علوم البيانات لمهمة تحليل أسعار الماس
والتنبؤ باستخدام لغة برمجة بايثون .وفقًا لتحليل أسعار الماس ،يمكننا القول إن سعر وحجم
الماس المتميز أعلى من أنواع الماس األخرى .أتمنى أن تكون قد أحببت هذا المقال عن تحليل
سعر الماس والتنبؤ به باستخدام بايثون.
53 Netflix
Netflix
يعرض لك نظام التوصيةيف Netflixاألفالم والبرامج التلفزيونية وفقًا الهتماماتكNetflix .
لديها الكثير من البيانات بسبب قاعدة مستخدميها .يتنبأ نظام التوصية الخاص به بكتالوج
مخصص لك بناءً على عوامل مثل:
يعد نوع المحتوى أحد أهم العوامل التي تساعد Netflixعلى التوصية بمزيد من المحتوى حتى
للمستخدمين الجدد .آمل أن تكون قد فهمت كيف توصي Netflixمستخدميها بالمحتوى.
يمكنك معرفة المزيد عن ذلك هنا.يف القسم أدناه ،سوف أطلعك على كيفية إنشاء نظام توصية
Netflixباستخدام بايثون.
Netflix
يتم تنزيل مجموعة البيانات التي أستخدمها إلنشاء نظام توصية Netflixباستخدام بايثون من
.Kaggleتحتوي مجموعة البيانات على معلومات حول جميع األفالم والبرامج التلفزيونية على
Netflixاعتبارًا من عام .2021يمكنك تنزيل مجموعة البيانات من هنا.
دعنا اآلن نستورد مكتبات بايثون الضرورية ومجموعة البيانات التي نحتاجها لهذه المهمة:
)"data = pd.read_csv("netflixData.csv
))(print(data.head
في االنطباعات األولى على مجموعة البيانات ،أستطيع أن أرى أن عمود العنوان ( Title
)columnيحتاج إلى إعداد ألنه يحتوي على #قبل اسم األفالم أو البرامج التلفزيونية .سوف
أعود إليها.يف الوقت الحالي ،دعنا نلقي نظرة على ما إذا كانت البيانات تحتوي على قيم خالية أم
ال:
55 Netflix
))(print(data.isnull().sum
تحتوي مجموعة البيانات على قيم فارغة ،ولكن قبل إزالة القيم الخالية ،دعنا نحدد األعمدة التي
يمكننا استخدامها لبناء نظام توصية :Netflix
.1يحتوي عمود العنوان ( )title columnعلى عناوين األفالم والبرامج التلفزيونية على
.Netflix
.2يصف عمود الوصف ( )Description columnمخطط العروض التلفزيونية
واألفالم.
56
.) ما إذا كان فيلمًا أم عرضًا تلفزيونيًاContent Type column( يخبرنا عمود.3
) على جميع أنواع العرض التلفزيوني أوGenre column( يحتوي عمود النوع.4
.الفيلم
:اآلن دعنا نسقط الصفوف التي تحتوي على قيم خالية وننتقل إلى أبعد من ذلك
data = data.dropna()
:اآلن سوف أقوم بتنظيف عمود العنوان ألنه يحتوي على بعض إعداد البيانات
import nltk
import re
nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
from nltk.corpus import stopwords
import string
stopword=set(stopwords.words('english'))
def clean(text):
text = str(text).lower)(
text = re.sub('\[.*?\]', '', text)
text = re.sub('https?://\S+|www\.\S+', '', text)
text = re.sub('<.*?>+', '', text)
text = re.sub('[%s]' % re.escape(string.punctuation), '',
text)
text = re.sub('\n', '', text)
text = re.sub('\w*\d\w*', '', text)
text = [word for word in text.split(' ') if word not in
stopword]
text=" ".join(text)
text = [stemmer.stem(word) for word in text.split(' ')]
text=" ".join(text)
return text
data["Title"] = data["Title"].apply(clean)
:دعنا اآلن نلقي نظرة على بعض عينات العناوين قبل المضي قدمًا
print(data.Title.sample(10))
سأستخدم مفهوم تشابه.اآلن سأستخدم عمود األنواع كميزة للتوصية بمحتوى مشابه للمستخدم
:)) هنا (يُستخدم للعثور على أوجه التشابهيف مستندينcosine similarity( جيب التمام
57 Netflix
feature = data["Genres"].tolist()
tfidf = text.TfidfVectorizer(input=feature,
stop_words="english")
tfidf_matrix = tfidf.fit_transform(feature)
similarity = cosine_similarity(tfidf_matrix)
اآلن سأقوم بتعيين عمود العنوان كفهرس حتى نتمكن من العثور على محتوى مشابه من خالل
:إعطاء عنوان الفيلم أو العرض التلفزيوني كمدخل
indices = pd.Series(data.index ,
index=data['Title']).drop_duplicates)(
:Netflix إليك اآلن كيفية كتابة دالة للتوصية باألفالم والبرامج التلفزيونية على
print(netFlix_recommendation("girlfriend"))
. باستخدام لغة برمجة بايثونNetflix هذه هي الطريقة التي يمكنك بها إنشاء نظام توصيات
بكتالوج مخصص لك استنادًا إلى عوامل مثل محفوظاتNetflix يتنبأ نظام التوصية الخاص بـ
العرض الخاصة بك وسجل عرض المستخدمين اآلخرين ذوي األذواق والتفضيالت المماثلة
آمل أن تكون قد.واألنواع والفئة واألوصاف والمزيد من المعلومات عن المحتوى الذي شاهدته
. باستخدام بايثونNetflix أحببت هذه المقالة حول إنشاء نظام توصيات
58
10
Website Traffic Forecasting using Python
يعني التنبؤ بترافيك موقع الويب ( )Website Traffic Forecastingالتنبؤ بترافيك موقع
الويب خالل فترة معينة .إنها واحدة من أفضل حاالت استخدام تنبؤ السالسل الزمنية ( Time
.)Series Forecastingإذا كنت تريد معرفة كيفية التنبؤ بترافيك موقع ويب ،فهذه المقالة
مناسبة لك.يف هذه المقالة ،سوف آخذك خالل مهمة التنبؤ بترافيك موقع ويب باستخدام بايثون.
يتم جمع مجموعة البيانات التي أستخدمها للتنبؤ بترافيك موقع الويب من بيانات الترافيك اليومية
لموقع .thecleverprogrammer.comيحتوي على بيانات حول بيانات الترافيك اليومية من
يونيو 2021إلى يونيو .2022يمكنك تنزيل مجموعة البيانات من هنا .لنبدأ اآلنيف مهمة التنبؤ
بترافيك موقع الويب عن طريق استيراد مكتبات بايثون ومجموعة البيانات الالزمة:
)"data = pd.read_csv("Thecleverprogrammer.csv
))(print(data.head
تحتوي مجموعة البيانات على عمودين ،التاريخ ( )dateوالترافيك( .)trafficقبل المضي قدمًا،
سأحول عمود التاريخ إلى نوع بيانات التاريخ والوقت:
data["Date"] = pd.to_datetime(data["Date”],
)”format="%d/%m/%Y
))(print(data.info
59
كان عمود التاريخ والوقت كائنًا ()objectيف البداية ،لذلك قمت بتحويله إلى عمود التاريخ
والوقت .دعنا اآلن نلقي نظرة على الترافيك اليومية لموقع الويب:
)'plt.style.use('fivethirtyeight
))plt.figure(figsize=(15, 10
)]"plt.plot(data["Date"], data["Views
)"plt.title("Daily Traffic of Thecleverprogrammer.com
()plt.show
بيانات الترافيك على موقعنا موسمية ( )seasonalألن الترافيك على الموقع تزداد خالل أيام
األسبوع وتنخفض خالل عطالت نهاية األسبوع .من المفيد معرفة ما إذا كانت مجموعة البيانات
موسمية أم ال أثناء العمل على مشكلة تنبؤ السالسل الزمنية .فيما يلي كيف يمكننا إلقاء نظرة على
ما إذا كانت مجموعة البيانات الخاصة بنا ثابتة ( )stationaryأو موسمية(:)seasonal
result = seasonal_decompose(data["Views”],
model='multiplicative’,
)freq = 30
() fig = plt.figure
() fig = result.plot
(fig.set_size_inches)10 ,15
60
نظرًا ألن البيانات ليست ثابتة ،فإن قيمة dهي .1للعثور على قيم pو ،qيمكننا استخدام
مخططات االرتباط التلقائي ( )autocorrelationواالرتباط التلقائي الجزئي ( partial
:)autocorrelation
)]"pd.plotting.autocorrelation_plot(data["Views
اآلن إليك كيف يمكننا تدريب نموذج SARIMAلمهمة التنبؤ بترافيك موقع الويب:
p, d, q = 5, 1, 2
model=sm.tsa.statespace.SARIMAX(data['Views”],
order=(p, d, q),
))seasonal_order=(p, d, q, 12
()model=model.fit
))(print(model.summary
دعنا اآلن نتنبأ بترافيك موقع الويب خالل الخمسين يومًا القادمة:
62
إذن هذه هي الطريقة التي يمكنك بها التنبؤ بترافيك موقع الويب لفترة معينة .يعد التنبؤ بترافيك
موقع الويب أحد أفضل أفكار مشروع علم البيانات التي يمكنك ذكرهايف سيرتك الذاتية .آمل أن
يكون هذا المقال مفيدًا لك لتعلم التنبؤ بترافيك موقع الويب باستخدام لغة برمجة بايثون.
64
11
Restaurant Recommendation System using
Python
يعد نظام التوصية ( )recommendation systemأحد التطبيقات الشائعة لعلم البيانات .نظام
توصية المطاعم ( )restaurant recommendation systemهو أحد التطبيقات التي توصي
بمطاعم مماثلة للعميل وفقًا لذوق العميل .إذا كنت تريد معرفة كيفية إنشاء نظام توصية مطعم،
فهذه المقالة مناسبة لك .ستأخذك هذه المقالةيف جولة حول كيفية إنشاء نظام توصية مطعم
باستخدام بايثون.
نظام توصية المطاعم هو أحد التطبيقات التي توصي بمطاعم مماثلة للعميل وفقًا لذوق العميل.
لبناء نظام توصية مطعم باستخدام بايثون ،قمت بجمع البيانات من .Kaggleيمكنك تنزيل
مجموعة البيانات لهذه المهمة من هنا.
دعنا اآلن نستورد مكتبات بايثون الضرورية ومجموعة البيانات التي نحتاجها لهذه المهمة:
import numpy as np
import pandas as pd
from sklearn.feature_extraction import text
from sklearn.metrics.pairwise import cosine_similarity
= data
)"pd.read_csv("TripAdvisor_RestauarantRecommendation.csv
))(print(data.head
65
قبل المضي قدمًا ،دعنا نلقي نظرة على ما إذا كانت البيانات تحتوي على أي قيم فارغة أم ال:
))(print(data.isnull().sum
لذلك تحتوي البيانات على بعض القيم الخاليةيف عمود النوع .سأحذف الصفوف التي تحتوي
على قيم فارغة قبل المضي قدمًا:
()data = data.dropna
يعد نوع المطعم ميزة قيّمةيف البيانات لبناء نظام توصية .يمثل عمود النوع هنا فئة المطاعم .على
سبيل المثال ،إذا كان العميل يحب المطاعم الصديقة للنباتيين ،فسوف ينظر فقط إلى التوصيات
إذا كانت صديقة للنباتيين أيضًا .لذلك سأستخدم عمود النوع كميزة للتوصية بمطاعم مماثلة
للعميل:
()feature = data["Type"].tolist
tfidf = text.TfidfVectorizer(input=feature,
)"stop_words="english
)tfidf_matrix = tfidf.fit_transform(feature
)similarity = cosine_similarity(tfidf_matrix
66
اآلن سأقوم بتعيين اسم المطعم كفهرس حتى نتمكن من العثور على مطاعم مماثلة من خالل
:إعطاء اسم المطعم كمدخل
indices = pd.Series(data.index,
index=data['Name']).drop_duplicates)(
:اآلن إليك كيفية كتابة دالة للتوصية بمطاعم مماثلة
print(restaurant_recommendation("Market Grill"))
نظام التوصية بالمطعم هو.هذه هي كيفية بناء نظام التوصية بالمطعم باستخدام لغة برمجة بايثون
آمل أن تكون قد أحببت هذه المقالة.تطبيق يوصي بمطاعم مماثلة للعميل وفقًا لذوق العميل
.حول بناء نظام التوصية بالمطعم باستخدام بايثون
67 Virat Kohli
Virat Kohli
يعتبر Virat Kohliأحد أشهر العبي الكريكيتيف العالم .هنا تحصل على مجموعة بيانات
لجميع مباريات ODIالتي لعبها Virat Kohliمن 18أغسطس 2008إلى 22يناير .2017
أنت مطالب بتحليل أداء Virat Kohliيف مباريات .ODI
Virat Kohli
لنبدأ اآلن بمهمة تحليل أداء Virat Kohliباستخدام بايثون .سأبدأ هذه المهمة عن طريق استيراد
مكتبات بايثون ومجموعة البيانات الالزمة:
)"data = pd.read_csv("Virat_Kohli.csv
))(print(data.head
دعنا نلقي نظرة على ما إذا كانت مجموعة البيانات هذه تحتوي على أي قيم فارغة أم ال قبل
المضي قدمًا:
))(print(data.isnull().sum
تحتوي مجموعة البيانات على المباريات التي لعبها Virat Kohliبين 18أغسطس 2008و
22يناير .2017لذلك دعونا نلقي نظرة على إجمالي النقاط التي سجلها :Virat Kohli
: خالل نفس الفترةVirat Kohli اآلن دعونا نلقي نظرة على متوسط نقاط
Virat لذا فإن معدل الضربيف. متوسطًا جيدًا37-35 يعتبر متوسط الضرب من،ODIs في
ييف مسيرتهVirat Kohli اآلن دعونا نلقي نظرة على اتجاه الجري الذي سجله. جيدKohli
:2017 يناير22 إلى2008 أغسطس18 من
matches = data.index
figure = px.line(data, x=matches, y="Runs”,
title='Runs Scored by Virat Kohli Between 18-Aug-08 -
22-Jan-17’)
figure.show)(
نقطة أو ما يقرب من100 سجل أكثر من، Virat Kohli في العديد من االشواط التي لعبها
)batting positions( اآلن دعونا نرى جميع مواقع الضرب. هذه عالمة جيدة على الثبات.ذلك
: Virat Kohli التي لعبها
#Batting Positions
data["Pos"] = data["Pos"].map({3.0: "Batting At 3", 4.0:
"Batting At 4", 2.0: "Batting At 2 ,"
" :1.0 Batting At 1", 7.0:"Batting At 7",
5.0:"Batting At 5 ,"
" :6.0 batting At 6”})
Pos = data["Pos"].value_counts)(
label = Pos.index
counts = Pos.values
70
اآلن دعونا. احتل المركز الثالث، Virat Kohli من جميع االشواط التي لعبها٪68 في أكثر من
:يف مراكز مختلفةVirat Kohli ) التي سجلهاtotal runs( نلقي نظرة على مجموع النقاط
label = data["Pos"]
counts = data["Runs"]
colors = ['gold','lightgreen', "pink", "blue", "skyblue",
"cyan", "orange"]
لذلك يمكننا. هييف المركز الثالثVirat Kohli من مجموع النقاط التي سجلها٪72 أكثر من
. Virat Kohliالقول أن الضربيف المركز الثالث مثالي لـ
نقطةيف شوط واحد) التي سجلها100( centuries اآلن دعونا نلقي نظرة على عدد القرون
: أثناء الضربيف االشواط األولى والثانيةVirat Kohli
centuries = data.query("Runs >= 100")
figure = px.bar(centuries, x=centuries["Inns"], y =
centuries["Runs”] ,
color = centuries["Runs"],
title="Centuries By Virat Kohli in First Innings Vs.
Second Innings”)
figure.show)(
يمكننا القول إن، من خالل هذا.لذلك يتم تسجيل معظم القرون أثناء الضربيف األدوار الثانية
)dismissals( دعنا اآلن نلقي نظرة على نوع عمليات الطرد. يحب مطاردة النتائجVirat Kohli
:يف معظم األوقاتVirat Kohli التي واجهها
لذلكيف معظم األوقات ،يخرج Virat Kohliمن خالل القبض عليه من قبل الالعب أو
الحارس .اآلن دعونا نلقي نظرة على الفريق الذي سجل Virat Kohliمعظم نقاطه:
وفقًا للرقم أعاله ،يحب Virat Kohliاللعب ضد سريالنكا وأستراليا ونيوزيلندا وجزر الهند
الغربية وإنجلترا .لكنه سجل معظم أشواطه أثناء لعبه ضد سريالنكا .دعونا اآلن نلقي نظرة على
الفريق الذي سجل ضده Virat Kohliمعظم قرونه:
= figure = px.bar(centuries, x=centuries["Opposition"], y
centuries["Runs”],
color = centuries["Runs"],
)”title="Most Centuries Against Teams
()figure.show
73 Virat Kohli
اآلن دعونا نحلل معدل. ضد أسترالياVirat Kohli كانت معظم القرون التي سجلها،لذلك
سأقوم بإنشاء مجموعة بيانات، Virat Kohli لتحليل معدل ضربات.Virat Kohli ضربات
:120 حيث كان معدل تسديده أكثر منVirat Kohli جديدة لجميع المباريات التي لعبها
strike_rate = data.query("SR >= 120")
print(strike_rate)
يلعب بمعدالت ضربات عاليةيف االشواط األولى أوVirat Kohli اآلن دعونا نرى ما إذا كان
:االشواط الثانية
()figure.show
لذلك وفقًا للشكل أعاله ،يحب Virat Kohliاللعب بقوة أكبريف االشواط األولى مقارنة
باالشواط الثانية .اآلن دعونا نرى العالقة بين األشواط التي سجلها Virat Kohliواألربع
( )foursالتي لعبهايف كل شوط:
هناك عالقة خطية .هذا يعني أن Virat Kohliيحب اللعب الرباعي .كلما زاد عدد مرات الجري
التي سجلهايف األدوار ،كلما لعب رباعيات أكثر .دعونا نرى ما إذا كانت هناك عالقة ما مع
السداسيات (:)sixes
ال توجد عالقة خطية قوية هنا .هذا يعني أن Virat Kohliيحب لعب رباعايات أكثر من
سداسيات .هذه هي الطريقة التي يمكنك بها تحليل أداء Virat Kohliأو أي العب كريكيت
آخريف العالم.
هذه هي الطريقة التي يمكنك بها إجراء تحليل أداء Virat Kohliباستخدام لغة برمجة بايثون.
يعد تحليل أداء الالعب إحدى حاالت استخدام علم البياناتيف التحليالت الرياضية .آمل أن
تكون قد أحببت هذه المقالة حول تحليل أداء Virat Kohliباستخدام بايثون.
76
Book 13
Recommendation System using Python
يعد نظام التوصية ( )recommendation systemأحد التطبيقات الشائعة لعلم البيانات .نظام
توصية الكتب ( )Book Recommendation systemهو تطبيق يستخدم للتوصية بالكتب
المماثلة للمستخدم .إذا كنت تريد معرفة كيفية إنشاء نظام توصية للكتب ،فهذه المقالة مناسبة
لك .ستأخذك هذه المقالةيف جولة حول كيفية إنشاء نظام توصية للكتب باستخدام بايثون.
يجب أن يوصي نظام التوصية الكتب بالكتب المماثلة بناءً على اهتمام المستخدم .يتم جمع
مجموعة البيانات الالزمة لبناء نظام توصية الكتاب من .Kaggleيمكنك تنزيل مجموعة البيانات
من هنا.
دعنا اآلن نستورد مكتبات بايثون الضرورية ومجموعة البيانات التي نحتاجها لهذه المهمة:
import numpy as np
import pandas as pd
from sklearn.feature_extraction import text
from sklearn.metrics.pairwise import linear_kernel
)"data = pd.read_csv("book_data.csv
))(print(data.head
: كتبيف مجموعة البيانات وفقًا لعدد التقييمات5 دعنا نلقي نظرة على أفضل
data = data.sort_values(by="book_rating_count",
ascending=False)
top_5 = data.head)(
import plotly.express as px
import plotly.graph_objects as go
labels = top_5["book_title"]
values = top_5["book_rating_count"]
colors = ['gold','lightgreen']
: دعنا نتحقق مما إذا كانت البيانات تحتوي على قيم خالية أم ال،قبل المضي قدمًا
print(data.isnull().sum())
book description ( تحتوي مجموعة البيانات على قيم خاليةيف عمود وصف الكتاب
: دعنا نسقط الصفوف التي تحتوي على قيم خالية.)column
data = data.dropna)(
:سأستخدم اآلن عمود وصف الكتاب كميزة للتوصية بالكتب المماثلة للمستخدم
78
feature = data["book_desc"].tolist)(
tfidf = text.TfidfVectorizer(input=feature,
stop_words="english")
tfidf_matrix = tfidf.fit_transform(feature)
similarity = linear_kernel(tfidf_matrix, tfidf_matrix)
) كفهرس حتى نتمكن من العثورbook title column( اآلن سأقوم بتعيين عمود عنوان الكتاب
:على كتب مماثلة من خالل إعطاء عنوان الكتاب كمدخل
indices = pd.Series(data.index ,
index=data['book_title']).drop_duplicates)(
:اآلن إليك كيفية كتابة دالة للتوصية بكتب مماثلة
، كمبتدئيف علم البيانات.يجب أن يوصي نظام التوصية بالكتب المماثلة وفقًا لمصلحة المستخدم
يمكنك.يجب أن تعمل بشكل جيديف مشروع علم البيانات هذا للتعرف على أنظمة التوصية
أتمنى أن تكون قد أحببت.العثور على المزيد من مشاريع علوم البيانات للتدرب عليها من هنا
.هذه المقالة حول كيفية بناء نظام توصية كتاب باستخدام بايثون
79
14
Smartwatch Data Analysis using Python
هناك الكثير من المنافسة بين العالمات التجاريةيف صناعة الساعات الذكية (.)smartwatch
الساعات الذكية مفضلة من قبل األشخاص الذين يرغبونيف رعاية لياقتهم البدنية .يعد تحليل
البيانات التي تم جمعها عن لياقتك إحدى حاالت استخدام علم البياناتيف الرعاية الصحية.
لذلك إذا كنت تريد معرفة كيفية تحليل بيانات اللياقة للساعة الذكية ،فهذه المقالة مناسبة لك.يف
هذه المقالة ،سوف آخذك خالل مهمة تحليل بيانات الساعة الذكية باستخدام بايثون.
مجموعة البيانات التي أستخدمها لتحليل بيانات الساعة الذكية متاحة للجمهور على .Kaggle
تم جمع مجموعة البيانات هذهيف البداية من 30من مستخدمي ساعة Fitbitالذكية .يمكنك
تنزيل مجموعة البيانات من هنا.
سأبدأ اآلن مهمة تحليل بيانات الساعة الذكية عن طريق استيراد مكتبات بايثون ومجموعة
البيانات الالزمة:
)"data = pd.read_csv("dailyActivity_merged.csv
))(print(data.head
80
قبل المضي قدمًا ،دعنا نلقي نظرة على ما إذا كانت مجموعة البيانات هذه تحتوي على أي قيم
فارغة أم ال:
))(print(data.isnull().sum
لذلك ال تحتوي مجموعة البيانات على أي قيم فارغة .دعنا نلقي نظرة على المعلومات المتعلقة
باألعمدةيف مجموعة البيانات:
))(print(data.info
العمود الذي يحتوي على تاريخ السجل هو كائن ( .)objectقد نحتاج إلى استخدام التواريخيف
تحليلنا ،فلنحول هذا العمود إلى عمود التاريخ والوقت (:)datetime column
81
data["TotalMinutes"] = data["VeryActiveMinutes"] +
data["FairlyActiveMinutes"] + data["LightlyActiveMinutes"] +
data["SedentaryMinutes"]
print(data["TotalMinutes"].sample(5))
:دعنا اآلن نلقي نظرة على اإلحصائيات الوصفية لمجموعة البيانات
print(data.describe())
82
)؛ يحتوي على بيانات حولCalories( تحتوي مجموعة البيانات على عمود السعرات الحرارية
دعونا نلقي نظرة على العالقة بين حرق السعرات.عدد السعرات الحرارية المحروقةيف اليوم
:) التي تم قطعهايف اليومtotal steps( ) وإجمالي الخطواتcalories burned( الحرارية
يمكنك أن ترى أن هناك عالقة خطية بين العدد اإلجمالي للخطوات وعدد السعرات الحرارية
active ( دعونا اآلن نلقي نظرة على متوسط العدد اإلجمالي للدقائق النشطة.ال محروقةيف اليوم
:)يف اليومminutes
fig.update_traces(hoverinfo='label+percent', textinfo='value',
textfont_size=30,
marker=dict(colors=colors, line=dict(color='black',
)))width=3
()fig.show
مالحظات:
قمنا بتحويل نوع بيانات عمود ( )ActivityDateإلى عمود التاريخ والوقت أعاله .دعونا
نستخدمه للعثور على أيام األسبوع للسجالت وإضافة عمود جديد لمجموعة البيانات هذه باسم
(:)Day
()data["Day"] = data["ActivityDate"].dt.day_name
))(print(data["Day"].head
دعنا اآلن نلقي نظرة على الدقائق النشطة جدًا ،والنشطة إلى حدٍ ما ،والنشطة الخفيفةيف كل يوم
من أيام األسبوع:
()fig = go.Figure
(fig.add_trace(go.Bar
x=data["Day"],
y=data["VeryActiveMinutes"],
name='Very Active’,
’marker_color='purple
))
(fig.add_trace(go.Bar
84
x=data["Day"],
y=data["FairlyActiveMinutes"],
name='Fairly Active’,
marker_color='green’
))
fig.add_trace(go.Bar(
x=data["Day"],
y=data["LightlyActiveMinutes"],
name='Lightly Active’,
marker_color='pink,
))
fig.update_layout(barmode='group', xaxis_tickangle=-45)
fig.show)(
:دعنا اآلن نلقي نظرة على عدد الدقائق غير النشطةيف كل يوم من أيام األسبوع
day = data["Day"].value_counts)(
label = day.index
counts = data["SedentaryMinutes"]
colors = ['gold','lightgreen', "pink", "blue", "skyblue",
"cyan", "orange"]
دعنا.لذا فإن الخميس هو أكثر يوم غير نشط وفقًا لنمط حياة جميع األفراديف مجموعة البيانات
:اآلن نلقي نظرة على عدد السعرات الحرارية المحروقةيف كل يوم من أيام األسبوع
calories = data["Day"].value_counts)(
label = calories.index
counts = data["Calories"]
colors = ['gold','lightgreen', "pink", "blue", "skyblue",
"cyan", "orange"]
حيث تم حرق، يُعد يوم الثالثاء أحد أكثر األيام نشاطًا لجميع األفراديف مجموعة البيانات،لذلك
.أكبر عدد من السعرات الحرارية يوم الثالثاء
86
هذه هي الطر يقة التي يمكنك بها تحليل بيانات الساعة الذكية باستخدام لغة برمجة بايثون .هناك
الكثير الذي يمكنك القيام به باستخدام مجموعة البيانات هذه .يمكنك أيضًا استخدامه للتنبؤ
بعدد السعرات الحرارية المحروقةيف اليوم.
هذه هي الطريقة التي يمكنك بها تحليل البيانات التي جمعتها ساعة ذكية حول اللياقة البدنية
باستخدام بايثون .الساعات الذكية مفضلة من قبل األشخاص الذين يرغبونيف رعاية لياقتهم
البدنية .يعد تحليل البيانات التي تم جمعها عن لياقتك إحدى حاالت استخدام علم البياناتيف
الرعاية الصحية .آمل أن تكون قد أحببت هذه المقالة حول تحليل بيانات الساعة الذكية باستخدام
بايثون.
87 IPL 2022
IPL 2022
يتم تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل IPL 2022من .Kaggleيمكنك
تنزيل مجموعة البيانات هذه من هنا .لنبدأ اآلن هذه المهمة عن طريق استيراد مكتبات بايثون
ومجموعة البيانات الضرورية:
. حتى اآلنIPL 2022 تحتوي مجموعة البيانات على جميع المعلومات الالزمة لتلخيص قصة
:IPL 2022 لنبدأ بالنظريف عدد المباريات التي فاز بها كل فريقيف
figure = px.bar(data, x=data["match_winner”],
title="Number of Matches Won in IPL 2022”)
figure.show)(
يفGujrat إنه إنجاز كفريق جديد لـ. البطولة بفوزه بثماني مبارياتGujrat يقود، حاليًا،لذا
سنحلل هنا ما إذا كانت معظم الفرق قد فازت. اآلن دعونا نرى كيف تفوز معظم الفرق. IPL
:)بالدفاع (الضرب أوالً) أو المطاردة (الضربة الثانية
. مباراة فازت أثناء الدفاع عن الهدف22 و، مباراة أثناء مطاردة الهدف24 تم ربح، حاليًا،لذلك
) بعد الفوزيفbatting or fielding اآلن دعنا نرى ما تفضله معظم الفرق (الضرب بالمالعب
:القرعة
toss = data["toss_decision"].value_counts)(
label = toss.index
counts = toss.values
colors = ['skyblue','yellow']
وهكذا ،يختار معظم القادة اللعب بعد الفوزيف القرعة .حتى اآلن،يف 43مباراة ،اختار الكابتن
اللعب أوالً ،وفي ثالث مباريات فقط ،اختار القادة المضرب أوالً .اآلن دعونا نرى أفضل الهدافين
في معظم مباريات :IPL 2022
حاليًا ،كان Jos Buttlerهدافًايف 5مباريات .إنه يبحثيف لمسة رائعة .دعنا نحللها بعمق من
خالل تضمين األشواط التي سجلها أفضل الهدافين:
figure = px.bar(data, x=data["top_scorer”],
y = data["highscore"] ,
color = data["highscore"],
)”title="Top Scorers in IPL 2022
()figure.show
91 Covid-19
حتى اآلن ،سجل Jos Buttlerثالثة قرون ،وسجل KL Rahulقرنين من الزمان .اآلن دعنا
نلقي نظرة على أكثر العب من جوائز المباراة حتى اآلنيف :IPL 2022
لذا يتصدر Kuldeep Yadavقائمة العبي جوائز المباراة بأربع مباريات .إنها بطولة رائعة لـ
Kuldeep Yadavهذا العام .اآلن دعونا نلقي نظرة على bowlersمع أفضل شخصيات
bowlersيف معظم المباريات:
يمكنك أن ترى Yuzvendra Chahalلديه أفضل شخصيات bowlersيف أربع مباريات .لذا
فهذه بطولة رائعة لـ Yuzvendra Chahalهذا العام أيضًا.
دعنا اآلن نلقي نظرة على ما إذا كان معظم الويكيت wicketsيسقط أثناء تحديد الهدف أو أثناء
مطاردة الهدف:
92
()figure = go.Figure
(figure.add_trace(go.Bar
x=data["venue"],
y=data["first_ings_wkts"],
'name='First Innings Wickets,
'marker_color='gold
))
(figure.add_trace(go.Bar
x=data["venue"],
y=data["second_ings_wkts"],
'name='Second Innings Wickets,
'marker_color='lightgreen
))
)figure.update_layout(barmode='group', xaxis_tickangle=-45
()figure.show
لذلكيف استاد Wankhedeفي مومباي واستاد MCAفي ، Puneتسقط معظم الويكيت أثناء
مطاردة الهدف .وفي الملعبين اآلخرين ،تسقط معظم الويكيت أثناء تحديد الهدف .هذه هي
الطريقة التي يمكنك بها تحليل وتلخيص قصة IPL 2022باستخدام بايثون.
هذه هي الطريقة التي يمكنك بها أداء مهمة تحليل IPL 2022باستخدام بايثون .يسير IPL
2022بشكل رائع بالنسبة إلى Gujratكفريق جديد هذا العام .لقد كان Jos Buttlerو KL
Rahulرائعينيف التعامل مع عصا الكريكيت ،batوكان Yuzvendra Chahalو Kuldeep
Yadavرائعينيف التعامل مع الرمي .bowlأتمنى أن تكون قد أحببت هذه المقالة حول تحليل
IPL 2022باستخدام بايثون.
93 Covid-19
Covid-19
أثرت الموجة األولى من Covid-19على االقتصاد العالمي حيث لم يكن العالم جاهزًا أبدًا
لمواجهة الوباء .وقد أدى ذلك إلى ارتفاع عدد الحاالت وارتفاع الوفيات وارتفاع معدالت البطالة
وارتفاع معدالت الفقر ،مما أدى إلى تباطؤ اقتصادي .هنا ،أنت مطالب بتحليل انتشار حاالت
Covid-19وجميع آثار Covid-19على االقتصاد.
يتم تنزيل مجموعة البيانات التي نستخدمها لتحليل تأثيرات covid-19من .Kaggleيحتوي
على بيانات حول:
.4مؤشر التنمية البشرية لجميع الدول ( Human development index of all the
.)countries
.9نصيب الفرد من الناتج المحلي اإلجمالي للدول ( GDP per capita of the
.)countries
Covid-19
لنبدأ مهمة تحليل تأثيرات Covid-19عن طريق استيراد مكتبات بايثون ومجموعة البيانات
الالزمة:
)"data = pd.read_csv("transformed_data.csv
)"data2 = pd.read_csv("raw_data.csv
)print(data
تحتوي البيانات التي نستخدمها على بيانات عن حاالت كوفيد 19-وتأثيرها على الناتج المحلي
اإلجمالي من 31ديسمبر 2019إلى 10أكتوبر .2020
تحتوي مجموعة البيانات التي نستخدمها هنا على ملفي بيانات .يحتوي أحد الملفات على بيانات
أولية ،بينما يحتوي الملف اآلخر على ملف تم تحويله .لكن يتعين علينا استخدام مجموعتي
البيانات لهذه المهمة ،حيث يحتوي كل منهما على معلومات مهمة بنفس القدريف أعمدة مختلفة.
لذلك دعونا نلقي نظرة على مجموعتي البيانات واحدة تلو األخرى:
95 Covid-19
))(print(data.head
))(print(data2.head
بعد الحصول على انطباعات أولية عن مجموعتي البيانات ،وجدت أنه يتعين علينا دمج
مجموعتي البيانات من خالل إنشاء مجموعة بيانات جديدة .ولكن قبل إنشاء مجموعة بيانات
جديدة ،دعنا نلقي نظرة على عدد عينات كل بلد الموجودةيف مجموعة البيانات:
()data["COUNTRY"].value_counts
لذلك ليس لدينا عدد متساوٍ من العينات لكل بلديف مجموعة البيانات .دعونا نلقي نظرة على قيمة
المنوال (:)mode value
96
data["COUNTRY"].value_counts().mode)(
سنحتاج إلى استخدامه لقسمة مجموع جميع العينات المتعلقة بمؤشر. هي قيمة المنوال294 إذن
فلنقم اآلن بإنشاء مجموعة.التنمية البشرية ونصيب الفرد من الناتج المحلي اإلجمالي والسكان
:بيانات جديدة من خالل دمج األعمدة الضرورية من مجموعتي البيانات
code = data["CODE"].unique().tolist)(
country = data["COUNTRY"].unique().tolist)(
hdi =[]
tc =[]
td =[]
sti =[]
population = data["POP"].unique().tolist)(
gdp =[]
for i in country:
hdi.append((data.loc[data["COUNTRY"] == i, "HDI"]).sum()/294)
tc.append((data2.loc[data2["location"] == i,
"total_cases"]).sum())
td.append((data2.loc[data2["location"] == i,
"total_deaths"]).sum())
sti.append((data.loc[data["COUNTRY"] == i, "STI"]).sum()/294)
population.append((data2.loc[data2["location"] == i,
"population"]).sum()/294)
لم أقم بتضمين عمود نصيب الفرد من الناتج المحلي اإلجمالي حتى اآلن .لم أجد األرقام
الصحيحة للناتج المحلي اإلجمالي للفرديف مجموعة البيانات .لذلك سيكون من األفضل جمع
البيانات يدويًا حول نصيب الفرد من الناتج المحلي اإلجمالييف البلدان.
نظرًا لوجود العديد من البلدانيف هذه البيانات ،فلن يكون من السهل جمع البيانات يدويًا حول
نصيب الفرد من الناتج المحلي اإلجمالييف جميع البلدان .لذلك دعونا نحدد عينة فرعية من
مجموعة البيانات هذه .إلنشاء عينة فرعية من مجموعة البيانات هذه ،سأختار أفضل 10دول بها
أكبر عدد من حاالت .Covid-19ستكون عينة مثالية لدراسة اآلثار االقتصادية لفيروس كورونا.
لذلك دعونا نفرز البيانات وفقًا إلجمالي حاالت : Covid-19
اآلن إليك كيف يمكننا تحديد أفضل 10بلدان بها أكبر عدد من الحاالت:
(data = data.head)10
)print(data
98
سأضيف اآلن عمودين آخرين (نصيب الفرد من الناتج المحلي اإلجمالي قبل، Covid-19
نصيب الفرد من الناتج المحلي اإلجمالي خالل ) Covid-19إلى مجموعة البيانات هذه:
مالحظة :يتم جمع البيانات المتعلقة بنصيب الفرد من الناتج المحلي اإلجمالي يدويًا.
Covid-19
لنبدأ اآلن بتحليل انتشار Covid-19في جميع البلدان التي بها أكبر عدد من حاالت اإلصابة
بفيروس .Covid-19سأقوم أوالً بإلقاء نظرة على جميع البلدان التي بها أكبر عدد من حاالت
اإلصابة بفيروس :Covid-19
يمكننا أن نرى أن الواليات المتحدة لديها نسبيًا عدد كبير جدًا من حاالت Covid-19مقارنة
بالبرازيل والهنديف المركزين الثاني والثالث .دعنا اآلن نلقي نظرة على العدد اإلجمالي للوفيات
بين البلدان التي بها أكبر عدد من حاالت اإلصابة بفيروس : Covid-19
figure = px.bar(data, y='Total Deaths', x='Country’,
)”title="Countries with Highest Deaths
()figure.show
تمامًا مثل العدد اإلجمالي لحاالت ،Covid-19تتصدر الواليات المتحدة عدد الوفيات ،مع
البرازيل والهنديف المركزين الثاني والثالث .شيء واحد يجب مالحظته هنا هو أن معدل الوفيات
في الهند وروسيا وجنوب إفريقيا منخفض نسبيًا وفقًا للعدد اإلجمالي للحاالت .دعنا اآلن نقارن
العدد اإلجمالي للحاالت وإجمالي الوفياتيف جميع هذه البلدان:
()fig = go.Figure
(fig.add_trace(go.Bar
x=data["Country"],
100
y=data["Total Cases"],
name='Total Cases’,
marker_color='indianred'
))
fig.add_trace(go.Bar(
x=data["Country"],
y=data["Total Deaths"],
name='Total Deaths’,
marker_color='lightsalmon’
))
fig.update_layout(barmode='group', xaxis_tickangle=-45)
fig.show)(
دعونا اآلن نلقي نظرة على النسبة المئوية إلجمالي الوفيات وإجمالي الحاالت بين جميع البلدان
:Covid-19 التي بها أكبر عدد من حاالت اإلصابة بفيروس
عمود آخر مهميف مجموعة البيانات هذه هو فهرس الصرامة ( .)stringency indexإنه مقياس
مركب لمؤشرات االستجابة ،بمايف ذلك إغالق المدارس وإغالق أماكن العمل وحظر السفر .إنه
يوضح مدى صرامة الدوليف اتباع هذه اإلجراءات للسيطرة على انتشار : Covid-19
fig = px.bar(data, x='Country', y='Total Cases’,
hover_data=['Population', 'Total Deaths'] ,
color='Stringency Index', height=400 ,
)”title= "Stringency Index during Covid-19
()fig.show
هنا يمكننا أن نرى أن الهند تؤدي أداءً جيدًايف مؤشر الصرامة أثناء تفشي فيروس كورونا.
Covid-19
دعنا اآلن ننتقل لتحليل آثار Covid-19على االقتصاد .هنا ،نصيب الفرد من الناتج المحلي
اإلجمالي هو العامل األساسي لتحليل التباطؤ االقتصادي الناجم عن تفشي .Covid-19دعونا
نلقي نظرة على نصيب الفرد من الناتج المحلي اإلجمالي قبل تفشي Covid-19بين البلدان
التي بها أكبر عدد من حاالت اإلصابة بفيروس Covid-19:
fig = px.bar(data, x='Country', y='Total Cases’,
hover_data=['Population', 'Total Deaths'] ,
102
دعونا اآلن نلقي نظرة على نصيب الفرد من الناتج المحلي اإلجمالي خالل االرتفاعيف حاالت
: Covid-19
Covid- وأثناءCovid-19 اآلن دعونا نقارن نصيب الفرد من الناتج المحلي اإلجمالي قبل
: على نصيب الفرد من الناتج المحلي اإلجماليCovid-19 إللقاء نظرة على تأثير19
fig = go.Figure)(
fig.add_trace(go.Bar(
x=data["Country"],
y=data["GDP Before Covid"],
name='GDP Per Capita Before Covid-19’,
103 Covid-19
marker_color='indianred’
))
fig.add_trace(go.Bar(
x=data["Country"],
y=data["GDP During Covid"],
name='GDP Per Capita During Covid-19’,
marker_color='lightsalmon’
))
fig.update_layout(barmode='group', xaxis_tickangle=-45)
fig.show)(
يمكنك أن ترى انخفاضًايف نصيب الفرد من الناتج المحلي اإلجمالييف جميع البلدان التي بها
.أكبر عدد من حاالت اإلصابة بفيروس كورونا
إنه.)Human Development Index( عامل اقتصادي مهم آخر هو مؤشر التنمية البشرية
دعونا نلقي نظرة.مؤشر إحصائي مركب لمتوسط العمر المتوقع والتعليم ومؤشرات نصيب الفرد
:على عدد البلدان التي كانت تنفق ميزانيتها على التنمية البشرية
إذن هذه هي الطريقة التي يمكننا بها تحليل انتشار Covid-19وتأثيره على االقتصاد.
في هذه المهمة ،درسنا انتشار فيروس كورونا بين الدول وتأثيره على االقتصاد العالمي .لقد رأينا
أن تفشي Covid-19أدى إلى أكبر عدد من حاالت اإلصابة والوفيات بفيروس Covid-19
في الواليات المتحدة .أحد األسباب الرئيسية وراء ذلك هو مؤشر الصرامةيف الواليات المتحدة.
إنها منخفضة نسبيًا وفقًا لعدد السكان .قمنا أيضًا بتحليل كيفية تأثر نصيب الفرد من الناتج
المحلي اإلجمالييف كل بلد أثناء تفشي فيروس كورونا .آمل أن تكون قد أحببت هذه المقالة حول
تحليل تأثيرات Covid-19باستخدام بايثون.
105 Instagram
Instagram 16
Instagram Reach Analysis using Python
يعد Instagramأحد أشهر تطبيقات الوسائط االجتماعية اليوم .يستخدمه األشخاص الذين
يستخدمون Instagramبشكل احترافي للترويج ألعمالهم وبناء محفظة وتدوين وإنشاء أنواع
مختلفة من المحتوى .نظرًا ألن Instagramهو تطبيق شائع يستخدمه ماليين األشخاص من
مختلف المجاالت ،فإن Instagramيستمريف التغيير لتحسين نفسه لمنشئي المحتوى
والمستخدمين .ولكن مع استمرار هذا التغيير ،فإنه يؤثر على مدى وصول منشوراتنا التي تؤثر
علينا على المدى الطويل .لذلك إذا أراد منشئ المحتوى أن يعمل بشكل جيد على Instagram
على المدى الطويل ،فعليه أن ينظر إلى بيانات وصوله إلى .Instagramهذا هو المكان الذي
يأتي فيه استخدام علم البياناتيف وسائل التواصل االجتماعي .إذا كنت تريد معرفة كيفية استخدام
بيانات Instagramالخاصة بنا لمهمة تحليل الوصول إلى ،Instagramفهذه المقالة مناسبة
لك.يف هذه المقالة ،سوف آخذك عبر تحليل الوصول الى Instagramباستخدام بايثون ،مما
سيساعد منشئي المحتوى على فهم كيفية التكيف مع التغييراتيف Instagramعلى المدى
الطويل.
Instagram
لقد كنت أبحث عن الوصول إلى Instagramلفترة طويلة اآلن.يف كل مرة أنشر فيها على حساب
Instagramالخاص بي ،أقوم بجمع بيانات حول مدى وصول المنشور بعد أسبوع .يساعد ذلك
في فهم كيفية عمل خوارزمية .Instagramإذا كنت ترغبيف تحليل مدى وصول حساب
Instagramالخاص بك ،فيجب عليك جمع بياناتك يدويًا حيث توجد بعض واجهات برمجة
التطبيقات ،APIلكنها ال تعمل بشكل جيد .لذلك من األفضل جمع بيانات Instagramيدويًا.
إذا كنت طالبًايف علم البيانات وترغبيف تعلم تحليل الوصول إلى Instagramباستخدام بايثون،
فيمكنك استخدام البيانات التي جمعتها من حسابي على .Instagramيمكنك تنزيل مجموعة
البيانات التي استخدمتها لمهمة تحليل مدى الوصول إلى Instagramمن هنا .اآلنيف القسم
أدناه ،سوف آخذك خالل مهمة تحليل الوصول إلى Instagramوالتنبؤ باستخدام التعلم اآللي
باستخدام بايثون.
Instagram
لنبدأ اآلن مهمة تحليل مدى وصول حساب Instagramالخاص بي عن طريق استيراد مكتبات
Pythonومجموعة البيانات الالزمة:
106
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
from wordcloud import WordCloud, STOPWORDS,
ImageColorGenerator
from sklearn.model_selection import train_test_split
from sklearn.linear_model import PassiveAggressiveRegressor
دعنا نلقي نظرة على ما إذا كانت مجموعة البيانات هذه تحتوي على أي،قبل البدءيف كل شيء
:قيم فارغة أم ال
data.isnull().sum)(
107 Instagram
لذلك فهي تحتوي على قيمة فارغةيف كل عمود .دعنا نسقط كل هذه القيم الفارغة ونتحرك إلى
أبعد من ذلك:
()data = data.dropna
دعنا نلقي نظرة على رؤى األعمدة لفهم نوع البيانات لجميع األعمدة:
()data.info
Instagram
لنبدأ اآلن بتحليل مدى وصول مشاركاتي على Instagram.سألقي نظرة أوالً على توزيع
االنطباعات ( )distribution of impressionsالتي تلقيتها من قسم الصفحة الرئيسية:
(.)home
))plt.figure(figsize=(10, 8
)'plt.style.use('fivethirtyeight
)"plt.title("Distribution of Impressions From Home
)]'sns.distplot(data['From Home
()plt.show
108
تُظهر االنطباعات التي أحصل عليها من قسم الصفحة الرئيسية على Instagramمدى وصول
مشاركاتي إلى متابعيني .بالنظر إلى االنطباعات من قسم الصفحة الرئيسية ،يمكنني القول إنه من
الصعب الوصول إلى كل متابعيني يوميًا .دعنا اآلن نلقي نظرة على توزيع مرات الظهور التي تلقيتها
من الوسوم (:)hashtags
))plt.figure(figsize=(10, 8
)"plt.title("Distribution of Impressions From Hashtags
)]'sns.distplot(data['From Hashtags
()plt.show
الوسوم هي أدوات نستخدمها لتصنيف منشوراتنا على Instagramحتى نتمكن من الوصول إلى
المزيد من األشخاص بناءً على نوع المحتوى الذي نقوم بإنشائه .يُظهر النظر إلى مرات ظهور
عالمة التصنيف أنه ال يمكن الوصول إلى جميع المنشورات باستخدام الوسوم ،ولكن يمكن
الوصول إلى العديد من المستخدمين الجدد من خالل الوسوم .دعنا اآلن نلقي نظرة على توزيع
مرات الظهور التي تلقيتها من قسم االستكشاف ()explore sectionيف : Instagram
))plt.figure(figsize=(10, 8
)"plt.title("Distribution of Impressions From Explore
)]'sns.distplot(data['From Explore
()plt.show
109 Instagram
دعنا اآلن نلقي نظرة على النسبة المئوية لالنطباعات التي أحصل عليها من مصادر مختلفة على
:Instagram
لذا تُظهر مخطط الدونات ( )donut plotأعاله أن ما يقرب من 50يف المائة من مدى الوصول
من متابعيني ،و38.1يف المائة من الوسوم ،و9.14يف المائة من قسم االستكشاف ،و3.01يف المائة
من مصادر أخرى.
اآلن دعنا نحلل محتوى مشاركاتي على .Instagramتحتوي مجموعة البيانات على عمودين،
وهما التسمية التوضيحية ( )captionوالوسوم ( ،)hashtagsوالتي ستساعدنايف فهم نوع
المحتوى الذي أنشره على .Instagram
110
) لعمود التسمية التوضيحية إللقاء نظرة على الكلماتwordcloud( دعنا ننشئ سحابة الكلمات
:Instagram األكثر استخدامًايف التسمية التوضيحية لمشاركاتي على
text = " ".join(i for i in data.Caption)
stopwords = set(STOPWORDS)
wordcloud = WordCloud(stopwords=stopwords,
background_color="white").generate(text)
plt.style.use('classic')
plt.figure( figsize=(12,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show)(
دعنا ننشئ سحابة الكلمات لعمود الوسوم إللقاء نظرة على الوسوم األكثر استخدامًايف،اآلن
:Instagram مشاركاتي على
سيساعدنا أيضًايف فهمInstagram دعنا اآلن نحلل العالقات للعثور على أهم عوامل وصولنا إلى
. Instagramكيفية عمل خوارزمية
دعونا نلقي نظرة على العالقة بين عدد اإلعجابات وعدد مرات االنطباعات على مشاركاتي على
: Instagram
Instagram هناك عالقة خطية بين عدد اإلعجابات ومدى الوصول الذي حصلت عليه على
) وعدد مرات االنطباعاتcomments( دعنا اآلن نرى العالقة بين عدد التعليقات
: Instagram) على مشاركاتي علىImpressions(
يبدو أن عدد التعليقات التي نتلقاها على إحدى المشاركات ( )sharesال يؤثريف مدى وصولها.
دعنا اآلن نلقي نظرة على العالقة بين عدد المشاركات وعدد مرات الظهور:
figure = px.scatter(data_frame = data, x="Impressions”,
y="Shares", size="Shares", trendline="ols”,
title = "Relationship Between Shares and Total
)”Impressions
()figure.show
سيؤدي عدد أكبر من المشاركات إلى وصول أعلى ،لكن المشاركات ال تؤثر على مدى وصول
المنشور بقدر ما تؤثر إبداءات اإلعجاب .دعنا اآلن نلقي نظرة على العالقة بين عدد مرات الحفظ
( )savesوعدد مرات االنطباعات (:)impressions
figure = px.scatter(data_frame = data, x="Impressions”,
y="Saves", size="Saves", trendline="ols”,
title = "Relationship Between Post Saves and Total
Impressions”,
()figure.show
هناك عالقة خطية بين عدد المرات التي يتم فيها حفظ المنشور الخاص بي ومدى وصول منشور
Instagramالخاص بي .دعنا اآلن نلقي نظرة على ارتباط جميع األعمدة بعمود مرات
االنطباعات (:)Impressions column
113 Instagram
()correlation = data.corr
))print(correlation["Impressions"].sort_values(ascending=False
لذلك يمكننا القول أن المزيد من اإلعجابات والحفظ سيساعدكيف الوصول إلى المزيد على
Instagramسيساعدك العدد األكبر من المشاركات أيضًايف الوصول إلى المزيد ،لكن العدد
المنخفض من المشاركات لن يؤثر على وصولك أيضًا.
لذا فإن معدل المحادثةيف حساب Instagramالخاص بي هو ٪31وهو ما يبدو وكأنه معدل
محادثة جيد جدًا .دعونا نلقي نظرة على العالقة بين إجمالي زيارات الملف الشخصي وعدد
المتابعين المكتسبين من جميع زيارات الملف الشخصي:
.العالقة بين زيارات الملف الشخصي والمتابعين المكتسبة هي أيضًا عالقة خطية
Instagram
سأقوم بتدريب نموذج التعلم اآللي للتنبؤ بمدى وصول منشور على،اآلنيف هذا القسم
: دعنا نقسم البيانات إلى مجموعات تدريب واختبار قبل تدريب النموذجInstagram
model = PassiveAggressiveRegressor)(
model.fit(xtrain, ytrain)
model.score(xtest, ytest)
من خالل تقديم مدخالت لنموذج التعلمInstagram دعنا اآلن نتوقع مدى وصول منشور على
:اآللي
هذه هي الطريقة التي يمكنك بها تحليل وتوقع مدى وصول منشورات Instagramباستخدام
التعلم اآللي باستخدام بايثون .إذا أراد منشئ المحتوى أن يؤدي أداءً جيدًا على Instagramعلى
المدى الطويل ،فعليه إلقاء نظرة على بيانات وصوله إلى . Instagramهذا هو المكان الذي يأتي
فيه استخدام علم البياناتيف وسائل التواصل االجتماعي .آمل أن تكون قد أحببت هذه المقالة
حول مهمة تحليل الوصول إلى Instagramباستخدام بايثون.
116 Tinder
Tinder 17
Tinder Reviews Sentiment Analysis using Python
Tinderهو أحد أكثر تطبيقات ( )datingالمواعدة شيوعًا .يربط األشخاص الذين لديهم
اهتمامات مماثلة .للتحقق مما إذا كان Tinderيساعد األشخاصيف العثور على شركاء ،يمكننا
تحليل مشاعر الناس حول .Tinderهناك الكثير من المراجعات على متجر Google Play
حول .Tinderيمكننا استخدام هذه البيانات لتحليل مشاعر مستخدمي .Tinderلذلك إذا
كنت تريد معرفة كيفية تحليل مراجعات ،Tinderفهذه المقالة مناسبة لك.يف هذه المقالة ،سوف
آخذك خالل مهمة مراجعة Tinderلتحليل المشاعر باستخدام بايثون.
Tinder
يتم تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل آراء Tinderمن .Kaggleتم جمعها
من مراجعات Tinderعلى متجر .Google Playدعنا اآلن نستورد مكتبات بايثون ومجموعة
البيانات الالزمة لبدء هذه المهمة:
import pandas as pd
import matplotlib.pyplot as plt
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from wordcloud import WordCloud, STOPWORDS,
ImageColorGenerator
import nltk
import re
from nltk.corpus import stopwords
import string
)"data = pd.read_csv("tinder_google_play_reviews.csv
))(print(data.head
117
. يمكنني رؤية بعض القيم الخاليةيف بعض األعمدة،في االنطباعات األولى لمجموعة البيانات هذه
لذلك.)content column( نحتاج فقط إلى عمود المحتوى،Tinder لتحليل مراجعات
:دعونا ننشئ مجموعة بيانات جديدة مع عمود المحتوى ونتحرك إلى أبعد من ذلك
data = data[["content"]]
:دعنا اآلن نرى ما إذا كانت لدينا قيم خاليةيف عمود المحتوى
data.isnull().sum)(
: فلنقم بإزالة القيم الخالية والمضي قدمًا،يحتوي عمود المحتوى أيضًا على قيم خالية
data = data.dropna)(
هنا يتعين علينا.)sentiment analysis( دعنا اآلن نجهز هذه البيانات لمهمة تحليل المشاعر
:تنظيف النصيف عمود المحتوى
nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
stopword=set(stopwords.words('english'))
def clean(text):
text = str(text).lower)(
text = re.sub('\[.*?\]', '', text)
text = re.sub('https?://\S+|www\.\S+', '', text)
text = re.sub('<.*?>+', '', text)
text = re.sub('[%s]' % re.escape(string.punctuation), '',
text)
text = re.sub('\n', '', text)
text = re.sub('\w*\d\w*', '', text)
text = [word for word in text.split(' ') if word not in
stopword]
text=" ".join(text)
text = [stemmer.stem(word) for word in text.split(' ')]
text=" ".join(text)
return text
data["content"] = data["content"].apply(clean)
:Tinder دعنا اآلن نلقي نظرة على نوع الكلمات التي يستخدمها األشخاصيف مراجعات
text = " ".join(i for i in data.content)
stopwords = set(STOPWORDS)
wordcloud = WordCloud(stopwords=stopwords,
background_color="white").generate(text)
plt.figure( figsize=(15,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
Tinder 118
plt.show)(
" وسلبيةPositive" سأضيف اآلن ثالثة أعمدة أخرىيف مجموعة البيانات هذه على أنها ايجابية
)sentiment scores( " من خالل حساب درجات المشاعرNeutral" "ومحايدةNegative"
:للمراجعات
nltk.download('vader_lexicon')
sentiments = SentimentIntensityAnalyzer)(
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["content"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["content"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["content"]]
data = data[["content", "Positive", "Negative", "Neutral"]]
print(data.head())
دعنا اآلن نلقي نظرة على نوع الكلمات التي يستخدمها األشخاصيف التعليقات اإليجابية على
:Tinder
stopwords = set(STOPWORDS)
wordcloud = WordCloud(stopwords=stopwords,
background_color="white").generate(positive)
plt.figure( figsize=(15,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show)(
دعنا اآلن نلقي نظرة على نوع الكلمات التي يستخدمها األشخاصيف المراجعات السلبية لـ
:Tinder
negative =' '.join([i for i in
data['content'][data['Negative'] > data["Positive"]]])
stopwords = set(STOPWORDS)
wordcloud = WordCloud(stopwords=stopwords,
background_color="white").generate(negative)
plt.figure( figsize=(15,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show)(
Tinder 120
)]"x = sum(data["Positive
)]"y = sum(data["Negative
)]"z = sum(data["Neutral
لذلك يكتب معظم المستخدمين تعليقات محايدة .دعونا نلقي نظرة على إجمالي جميع درجات
المشاعر:
)print("Positive: ", x
)print("Negative: ", y
)print("Neutral: ", z
كما ترى ،اإليجابي أكثر بكثير من السلبي ،يمكننا القول إن معظم المستخدمين سعداء بـ
.Tinder
هذه هي الطريقة التي يمكنك بها تنفيذ مهمة Tinderتحليل مشاعر مراجعات Tinder
باستخدام بايثون .هو أحد أكثر تطبيقات المواعدة شيوعًا .يربط األشخاص الذين لديهم
اهتمامات مماثلة .آمل أن تكون قد أحببت هذا المقال حول تحليل المراجعاتيف .Tinder
121 TikTok
TikTok 18
TikTok Reviews Sentiment Analysis using
Python
يعد TikTokأحد أشهر تطبيقات الوسائط االجتماعية اليوم .تشتهر بمقاطع الفيديو القصيرة
الخاصة بها .غالبًا ما يستخدم األشخاص هذا التطبيق لمشاهدة مقاطع فيديو مسلية ومضحكة.
على الرغم من محتواه الترفيهي ،إال أن هذا التطبيق ال يحبه الجميع .إذا تصفحت مراجعاته،
فستجد مزيجًا من الكراهية والدعم لـ TikTokيف جميع أنحاء العالم .لذلك ،دعنا نحلل
مراجعات TikTokلمعرفة ما يشعر به الناس حول محتوى هذا التطبيق.يف هذه المقالة ،سوف
أطلعك على مهمة تحليل المشاعر لمراجعات TikTokباستخدام بايثون.
TikTok
يتم تنزيل مجموعة البيانات التي أستخدمها هنا لمهمة مراجعات TikTokلتحليل المشاعر من
.Kaggleتم جمعهايف األصل من تقييمات TikTokعلى متجر .Google Playيمكنك تنزيل
مجموعة البيانات هذه من هنا .دعنا اآلن نستورد مكتبات بايثون ومجموعة البيانات الالزمة لبدء
هذه المهمة:
)"data = pd.read_csv("tiktok.csv
))(print(data.head
122
في االنطباعات ( )impressionsاألولى لمجموعة البيانات هذه ،يمكنني رؤية قيم خاليةيف بعض
األعمدة .لتحليل تقييمات ، TikTokنحتاج فقط إلى عمودين ،المحتوى ( )contentوالنتيجة
( )score؛ لذلك دعونا ننشئ مجموعة بيانات جديدة مع هذين العمودين فقط ونتقدم خطوة
أخرى من خالل تحليل آراء :TikTok
دعنا اآلن نرى ما إذا كان أي من هذين العمودين يحتوي على أي قيم فارغة:
))(print(data.isnull().sum
لذلك هناك أربع قيم فارغةيف عمود المحتوى .دعنا نسقط القيم الفارغة ونتحرك أبعد من ذلك:
()data = data.dropna
دعنا اآلن نجهز هذه البيانات لمهمة تحليل المشاعر .هنا يتعين علينا تنظيف النصيف عمود
المحتوى:
))'stopword=set(stopwords.words('english
def clean(text):
text = ()str(text).lower
text = )re.sub('\[.*?\]', '', text
text = )re.sub('https?://\S+|www\.\S+', '', text
text = )re.sub('<.*?>+', '', text
123 TikTok
ratings = data["score"].value_counts)(
numbers = ratings.index
quantity = ratings.values
import plotly.express as px
figure = px.pie(data ,
values=quantity ,
names=numbers,hole = 0.5)
figure.show)(
٪12.1 و، TikTok من المستخدمين قد أعطوا خمسة تقييمات لـ٪75.7 يمكنك أن ترى أن
اآلن دعنا نلقي نظرة على نوع الكلمات التي يستخدمها.1 من المستخدمين صنفوها بـ
: TikTok المستخدمونيف مراجعات
()plt.show
سأضيف اآلن ثالثة أعمدة أخرىيف مجموعة البيانات هذه على أنها إيجابية ( )Positiveوسلبية
( )Negativeومحايدة ( )Neutralمن خالل حساب درجات المشاعر ( sentiment
)scoresللتغريدات:
دعنا اآلن نلقي نظرة على نوع الكلمات التي يستخدمها الناسيف التعليقات اإليجابية على
:TikTok
125 TikTok
دعنا اآلن نلقي نظرة على نوع الكلمات التي يستخدمها الناس غالبًايف التعليقات السلبية على
:TikTok
هذه هي الطريقة التي يمكننا بها تحليل مشاعر مراجعات TikTokباستخدام لغة برمجة بايثون.
19
Ukraine Russia War Twitter
Sentiment Analysis using Python
اليوم هو اليوم التاسع عشر للحرب بين روسيا وأوكرانيا .تدعم العديد من الدول أوكرانيا من
خالل فرض عقوبات اقتصادية على روسيا .هناك الكثير من التغريدات حول حرب أوكرانيا
وروسيا حيث يميل الناس إلى تحديث الحقائق على األرض ،وما يشعرون به حيال ذلك ،ومن
يدعمون .لذلك إذا كنت ترغبيف تحليل مشاعر الناس بشأن الحربيف أوكرانيا وروسيا ،فهذا
المقال مناسب لك.يف هذه المقالة ،سأطلعك على مهمة تحليل مشاعر الحربيف أوكرانيا وروسيا
على تويتر باستخدام لغة بايثون.
يتم تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل المشاعر على Twitterبشأن حرب
أوكرانيا وروسيا من .Kaggleتم جمع مجموعة البيانات هذهيف البداية من Twitterويتم
تحديثها بانتظام .يمكنك تنزيل مجموعة البيانات هذه من هنا .دعنا اآلن نستورد مكتبات بايثون
ومجموعة البيانات الالزمة للبدء بهذه المهمة:
(data = pd.read_csv
127
دعونا نلقي نظرة سريعة على جميع أسماء األعمدة لمجموعة البيانات:
)print(data.columns
نحتاج فقط إلى ثالثة أعمدة لهذه المهمة (اسم المستخدم ( )usernameوالتغريدة ()tweet
واللغة ())language؛ سأختار فقط هذه األعمدة وأمضي قدمًا:
لذلك ال يحتوي أي من األعمدة على قيم فارغة ،فلنلقِ نظرة سريعة على عدد التغريدات التي يتم
نشرها بأي لغة:
()data["language"].value_counts
128
سأقوم. دعنا نجهز هذه البيانات لمهمة تحليل المشاعر.لذا فإن معظم التغريدات باللغة اإلنجليزية
:هنا بإزالة جميع الروابط وعالمات الترقيم والرموز وأخطاء اللغة األخرى من التغريدات
nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
stopword=set(stopwords.words('english'))
def clean(text):
text = str(text).lower)(
text = re.sub('\[.*?\]', '', text)
text = re.sub('https?://\S+|www\.\S+', '', text)
text = re.sub('<.*?>+', '', text)
text = re.sub('[%s]' % re.escape(string.punctuation), '',
text)
129
) وسلبيةPositive( سأضيف اآلن ثالثة أعمدة أخرىيف مجموعة البيانات هذه على أنها إيجابية
sentiment ( ) من خالل حساب درجات المشاعرNeutral( ) ومحايدةNegative(
:) للتغريداتscores
nltk.download('vader_lexicon')
sentiments = SentimentIntensityAnalyzer)(
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["tweet"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["tweet"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["tweet"]]
130
دعنا اآلن نلقي نظرة على الكلمات األكثر شيوعًا التي يستخدمها األشخاص ذوو المشاعر
:اإليجابية
:دعنا اآلن نلقي نظرة على الكلمات األكثر شيوعًا التي يستخدمها األشخاص ذوو المشاعر السلبية
))plt.figure( figsize=(15,10
)'plt.imshow(wordcloud, interpolation='bilinear
)"plt.axis("off
()plt.show
هذه هي الطريقة التي يمكنك بها تحليل مشاعر الناس بشأن حرب أوكرانيا وروسيا .آمل أن تنتهي
هذه الحرب قريبًا وأن تعود األمور إلى طبيعتها.
هناك الكثير من التغريدات حول حرب أوكرانيا وروسيا حيث يميل الناس إلى تحديث الحقائق
على األرض ،وما يشعرون به حيال ذلك ،ومن يدعمون .لقد استخدمت هذه التغريداتيف مهمة
تحليل المشاعر على تويتر بشأن حرب أوكرانيا وروسيا.
132 Flipkart
Flipkart 20
Flipkart Reviews Sentiment Analysis using Python
Flipkartهي واحدة من أشهر الشركات الهندية .إنها منصة للتجارة اإللكترونية تتنافس مع
منصات التجارة اإللكترونية الشهيرة مثل .Amazonواحدة من أكثر حاالت استخدام علم
البيانات شيوعًا هي مهمة تحليل المشاعر لمراجعات المنتجات المباعة على منصات التجارة
اإللكترونية .لذلك ،إذا كنت تريد معرفة كيفية تحليل مشاعر مراجعات ،Flipkartفهذه المقالة
مناسبة لك .يف هذه المقالة ،سوف أطلعك على مهمة Flipkartلمراجعة تحليل المشاعر
باستخدام بايثون.
Flipkart
يتم تنزيل مجموعة البيانات التي أستخدمها هنا لتحليل المشاعر لمراجعات Flipkartمن
.Kaggleلنبدأ هذه المهمة عن طريق استيراد مكتبات بايثون ومجموعة البيانات الضرورية:
= data
pd.read_csv("https://raw.githubusercontent.com/amankharwal/Web
)"site-data/master/flipkart_reviews.csv
))(print(data.head
تحتوي مجموعة البيانات هذه على ثالثة أعمدة فقط .دعنا نلقي نظرة على ما إذا كان أي من هذه
األعمدة يحتوي على قيم مفقودة أم ال:
))(print(data.isnull().sum
133
نظرًا ألن هذه هي مهمة تحليل المشاعر.لذلك ال تحتوي مجموعة البيانات على أي قيم فارغة
فسوف أقوم بتنظيف وإعداد العمود الذي يحتوي على المراجعات قبل، Flipkartلمراجعات
:التوجه إلى تحليل المشاعر
import nltk
import re
nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
from nltk.corpus import stopwords
import string
stopword=set(stopwords.words('english'))
def clean(text):
text = str(text).lower)(
text = re.sub('\[.*?\]', '', text)
text = re.sub('https?://\S+|www\.\S+', '', text)
text = re.sub('<.*?>+', '', text)
text = re.sub('[%s]' % re.escape(string.punctuation), '',
text)
text = re.sub('\n', '', text)
text = re.sub('\w*\d\w*', '', text)
text = [word for word in text.split(' ') if word not in
stopword]
text=" ".join(text)
text = [stemmer.stem(word) for word in text.split(' ')]
text=" ".join(text)
return text
data["Review"] = data["Review"].apply(clean)
Flipkart
) الخاص بالبيانات على التصنيفات التي قدمها كلRating column( يحتوي عمود التصنيف
لذلك دعونا نلقي نظرة على كيفية قيام معظم األشخاص بتقييم المنتجات التي يشترونها.مراجع
: Flipkart من
ratings = data["Rating"].value_counts)(
numbers = ratings.index
quantity = ratings.values
import plotly.express as px
figure = px.pie(data ,
values=quantity ,
names=numbers,hole = 0.5)
figure.show)(
Flipkart 134
Flipkart تقييمات للمنتجات التي يشترونها من5 من أصل5 من المراجعين٪ 60 لذلك منح
سأستخدم سحابة، لهذا.دعونا اآلن نلقي نظرة على نوع التعليقات التي يتركها األشخاص
: ) لتصوير الكلمات األكثر استخدامًايف عمود المراجعاتword cloud( الكلمات
عن طريق إضافة ثالثة أعمدةيف مجموعة البياناتFlipkart سأقوم اآلن بتحليل مشاعر مراجعات
) من خاللNeutral( ) ومحايدةNegative( ) وسلبيةPositive( هذه على أنها إيجابية
:) للمراجعاتsentiment scores( حساب درجات المشاعر
nltk.download('vader_lexicon')
sentiments = SentimentIntensityAnalyzer)(
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["Review"]]
135
:Flipkart اآلن دعونا نرى كيف يفكر معظم المراجعينيف منتجات وخدمات
x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])
دعنا نلقي نظرة على إجمالي درجات المشاعر اإليجابية.لذا فإن معظم المراجعات محايدة
: Flipkart والسلبية والحيادية للعثور على نتيجة حول تقييمات
print("Positive: ", x)
print("Negative: ", y)
print("Neutral: ", z)
وتقدم نسبة صغيرة من األشخاص مراجعات، يعطي معظم األشخاص مراجعات محايدة،لذلك
آمل أن تكون قد.Flipkart لذلك يمكننا القول إن الناس راضون عن منتجات وخدمات.سلبية
. باستخدام بايثونFlipkart أحببت هذا المقال حول تحليل المشاعر لـ
136
21
Pfizer Vaccine Sentiment Analysis using Python
يعد Twitterأحد أكثر تطبيقات الوسائط االجتماعية شيوعًا حيث يتمتع األشخاص بحرية
مشاركة آرائهم حول أي موضوع .هناك العديد من التغريدات المسجلة حول التوعية بلقاح فايزر
( )Pfizer vaccineوالتي يمكن استخدامها لتحليل مشاعر الناس حول لقاح فايزر .لذلك ،إذا
كنت تريد معرفة كيفية استخدام مجموعة بيانات Twitterلتحليل المشاعر ،فهذه المقالة مناسبة
لك.يف هذه المقالة ،سوف أطلعك على مهمة تحليل المشاعر تجاه لقاح Pfizerباستخدام
بايثون.
يتم تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل المشاعر تجاه لقاح Pfizerمن
،Kaggleوالتي تم جمعهايف البداية من Twitterعندما كان األشخاص يشاركون آرائهم حول
لقاح .Pfizerلنبدأ مهمة تحليل المشاعر تجاه لقاح Pfizerعن طريق استيراد مكتبات بايثون
ومجموعة البيانات الالزمة:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from wordcloud import WordCloud, STOPWORDS,
ImageColorGenerator
= data
pd.read_csv("https://raw.githubusercontent.com/amankharwal/Web
)"site-data/master/vaccination_tweets.csv
))(print(data.head
لذا فإن مجموعة البيانات هذه كبيرة جدًا ،دعنا نلقي نظرة على ما إذا كانت تحتوي على أي قيم
فارغة أم ال:
()data.isnull().sum
137
على الرغم من أن هذه القيم الخالية لن تؤثر على مهمة تحليل المشاعر ،للحفاظ على بساطة
األمور ،سأقوم بإسقاط الصفوف التي تحتوي على قيم خالية ألن مجموعة البيانات كبيرة بالفعل:
()data = data.dropna
يعد عمود النص ( )text columnأهم ميزةيف مجموعة البيانات هذه ألنه يحتوي على آراء
مستخدمي Twitterحول لقاح فايزر .لكن يجب إعداد عمود النص ألنه يحتوي على العديد
من الرموز الخاصة واألخطاء اللغوية .فيما يلي كيف يمكننا تنظيف عمود النص:
import nltk
import re
)'nltk.download('stopwords
)"stemmer = nltk.SnowballStemmer("english
from nltk.corpus import stopwords
import string
))'stopword=set(stopwords.words('english
def clean(text):
)(text = str(text).lower
)text = re.sub('\[.*?\]', '', text
)text = re.sub('https?://\S+|www\.\S+', '', text
)text = re.sub('<.*?>+', '', text
138
والتي يمكن،)hashtags column( دعنا اآلن نلقي نظرة على سحابة الكلماتيف عمود الوسوم
:أن توضح نوع الوسوم التي كانت رائجة عندما كان األشخاص يشاركون آرائهم حول لقاح فايزر
()data["user_verified"].value_counts
في اإلخراج أعاله ،يُظهر Falseعدد المستخدمين الذين لم يتم التحقق منهم ويظهر Trueعدد
المستخدمين الذين تم التحقق منهم .دعنا اآلن ننتقل إلى مهمة تحليل المشاعر للقاح فايزر.
سأضيف هنا ثالثة أعمدة أخرىيف مجموعة البيانات هذه على أنها موجبة ( )Positiveوسلبية
( )Negativeومحايدة ( )Neutralمن خالل حساب درجات المشاعريف عمود النص:
)'nltk.download('vader_lexicon
)(sentiments = SentimentIntensityAnalyzer
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
]]"in data["text
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
]]"in data["text
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
]]"in data["text
]]"data = data[["text", "Positive", "Negative", "Neutral
))(print(data.head
140
لذلك كانت معظم آراء المستخدمين محايدة ،دعنا نلقي نظرة على إجمالي كل نتيجة عاطفية قبل
التوصل إلى أي استنتاج:
)print("Positive: ", x
)print("Negative: ", y
)print("Neutral: ", z
مجموع اإليجابيات والسلبيات أقل بكثير من الحيادية ،لذلك يمكننا القول إن مناقشة مستخدمي
تويتر كانت حول الوعي بلقاح فايزر بدالً من مشاركة فوائده أو عيوبه.
هذه هي الطريقة التي يمكنك بها تحليل آراء مستخدمي تويتر حول لقاح فايزر.يف ختام تحليل
المشاعر هذا ،يمكنني القول فقط إن مناقشة مستخدمي تويتر كانت حول الوعي بلقاح فايزر بدالً
من مشاركة فوائده أو عيوبه .آمل أن تكون قد أحببت هذا المقال حول تحليل المشاعر تجاه لقاح
فايزر باستخدام بايثون.
141 Omicron
Omicron 22
Omicron Sentiment Analysis using Python
قبل أيام قليلة ،صنفت منظمة الصحة العالمية نوعًا جديدًا من الفيروس التاجي
( ،B.1.1.529 ،)coronavirusكمتحور مثير للقلق أطلق عليه اسم .Omicronبعد ذلك
مباشرة ،رأينا انتشار التغريدات حول متحور Omicronعلى .Twitterلذا ،إذا كنت تريد معرفة
كيف يمكننا تحليل مشاعر التغريدات حول متحور ،Omicronفهذه المقالة مناسبة لك.يف هذه
المقالة ،سوف أطلعك على مهمة تحليل مشاعر Omicronباستخدام بايثون.
Omicron
يتم تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل مشاعر Omicronمن ،Kaggle
والتي تم جمعهايف البداية من Twitterعندما كان األشخاص يشاركون آرائهم حول متحور
.Omicronفلنبدأ مهمة تحليل المشاعر Omicronعن طريق استيراد مكتبات بايثون
ومجموعة البيانات الضرورية:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from wordcloud import WordCloud, STOPWORDS,
ImageColorGenerator
)"data = pd.read_csv("omicron.csv
))(print(data.head
مجموعة البيانات هذه كبيرة جدًا ،دعنا نلقي نظرة على ما إذا كانت مجموعة البيانات هذه تحتوي
على أي قيم فارغة أم ال:
))(print(data.isnull().sum
142
وسأقوم بإزالة،تحتوي مجموعة البيانات على قيم خاليةيف ثالثة أعمدة تحتوي على بيانات نصية
: جميع الصفوف التي تحتوي على القيم الخالية
data = data.dropna)(
Omicron
)يف مجموعة البيانات على التغريدات التي قام بهاtext column( يحتوي عمود النص
نحتاج إلى تنظيف هذا،للمضي قدمًا. Omicron األشخاص لمشاركة آرائهم حول متحور
: إليك كيف يمكننا القيام بذلك.العمود وإعداده لمهمة تحليل المشاعر
import nltk
import re
nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
from nltk.corpus import stopwords
import string
stopword=set(stopwords.words('english'))
def clean(text):
text = str(text).lower)(
text = re.sub('\[.*?\]', '', text)
text = re.sub('https?://\S+|www\.\S+', '', text)
text = re.sub('<.*?>+', '', text)
text = re.sub('[%s]' % re.escape(string.punctuation), '',
text)
text = re.sub('\n', '', text)
text = re.sub('\w*\d\w*', '', text)
text = [word for word in text.split(' ') if word not in
stopword]
text=" ".join(text)
text = [stemmer.stem(word) for word in text.split(' ')]
text=" ".join(text)
143 Omicron
return text
data["text"] = data["text"].apply(clean)
)يفword cloud( فلنلقِ اآلن نظرة على سحابة الكلمات،نظرًا ألننا قمنا بتنظيف عمود النص
:عمود النص لنلقي نظرة على أكبر عدد من الكلمات التي يستخدمها األشخاصيف تغريداتهم
) إللقاء نظرةhashtags column( دعنا اآلن نلقي نظرة على سحابة الكلماتيف عمود الوسوم
:على أكبر عدد من عالمات التصنيف التي يستخدمها األشخاصيف تغريداتهم
سأضيف هنا ثالثة أعمدةOmicron اآلن سأحسب درجات المشاعر للتغريدات حول متحور
) ومحايدةNegative( ) وسلبيةPositive( أخرىيف مجموعة البيانات هذه على أنها موجبة
:)يف عمود النصsentiment scores( ) من خالل حساب درجات المشاعرNeutral(
nltk.download('vader_lexicon')
sentiments = SentimentIntensityAnalyzer)(
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["text"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["text"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["text"]]
data = data[["text", "Positive", "Negative", "Neutral"]]
print(data.head())
: Omicron اآلن دعونا نرى كيف كان رد فعل معظم الناس حول متحور
x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])
مما يعني أن األشخاص كانوا يشاركون معلومات حول متغير،لذلك كانت معظم اآلراء محايدة
.بدالً من مشاركة أي آراء إيجابية أو سلبيةOmicron
إنه نوع. لفيروس كوروناOmicron إذن هذه هي الطريقة التي يمكنك بها تحليل مشاعر متحور
جديد من الفيروسات التاجية التي تم تصنيفها على أنها البديل المثير للقلق من قبل منظمة الصحة
. باستخدام بايثونOmicron آمل أن تكون قد أحببت هذا المقال حول تحليل المشاعر.العالمية
145
Water 23
Quality Analysis using python
يُعد الحصول على مياه الشرب المأمونة أحد االحتياجات األساسية لجميع البشر .من وجهة نظر
قانونية ،يعتبر الحصول على مياه الشرب أحد حقوق اإلنسان األساسية .تؤثر العديد من العوامل
على جودة المياه ( ،)Water Qualityكما أنها أحد مجاالت البحث الرئيسيةيف التعلم اآللي.
ل ذلك إذا كنت تريد معرفة كيفية إجراء تحليل جودة المياه ()water quality analysis
باستخدام التعلم اآللي ،فهذه المقالة مناسبة لك.يف هذه المقالة ،سوف أطلعك على تحليل جودة
المياه باستخدام التعلم اآللي باستخدام بايثون.
يُعد تحليل جودة المياه أحد المجاالت الرئيسية للبحثيف التعلم اآللي .يُعرف أيضًا باسم تحليل
قابلية المياه للشرب ( )water potability analysisألن مهمتنا هنا هي فهم جميع العوامل التي
تؤثر على قابلية المياه للشرب وتدريب نموذج التعلم اآللي الذي يمكنه تصنيف ما إذا كانت عينة
مياه معينة آمنة أو غير صالحة لالستهالك.
بالنسبة لمهمة تحليل جودة المياه ،سأستخدم مجموعة بيانات Kaggleالتي تحتوي على بيانات
حول جميع العوامل الرئيسية التي تؤثر على قابلية المياه للشرب .جميع العوامل التي تؤثر على
جودة المياه مهمة للغاية ،لذلك نحتاج إلى استكشاف كل ميزة من ميزات مجموعة البيانات هذه
بإيجاز قبل تدريب نموذج التعلم اآللي للتنبؤ بما إذا كانت عينة المياه آمنة أو غير مناسبة
لالستهالك .يمكنك تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل جودة المياه من هنا.
سأبدأ مهمة تحليل جودة المياه عن طريق استيراد مكتبات بايثون ومجموعة البيانات الضرورية:
)"data = pd.read_csv("water_potability.csv
)(data.head
146
يمكنني رؤية القيم الخاليةيف المعاينة األولى لمجموعة البيانات هذه نفسها ،لذلك قبل المضي
قدمًا ،دعنا نزيل جميع الصفوف التي تحتوي على قيم فارغة:
()data = data.dropna
()data.isnull().sum
عمود القابلية للشرب ( )Potability columnلمجموعة البيانات هذه هو العمود الذي نحتاج
إلى توقعه ألنه يحتوي على القيمتين 0و 1التي تشير إلى ما إذا كانت المياه صالحة للشرب ()1
أو غير صالحة ( )0للشرب .لذلك دعونا نرى توزيع 0و 1يف عمود ":" Potability
))plt.figure(figsize=(15, 10
)sns.countplot(data.Potability
)"plt.title("Distribution of Unsafe and Safe Water
)(plt.show
لذلك هذا شيء يجب أن تالحظه أن مجموعة البيانات هذه غير متوازنة ( )not balancedألن
عينات األصفار أكثر من 1ثانية.
كما ذكرنا أعاله ،ال توجد عوامل ال يمكننا تجاهلها والتي تؤثر على جودة المياه ،لذلك دعونا
نستكشف جميع األعمدة واحدة تلو األخرى .لنبدأ بإلقاء نظرة على عمود االس الهيدروجيني
(:)ph column
147
يمثل عمود األس الهيدروجيني قيمة األس الهيدروجيني للماء وهو عامل مهميف تقييم التوازن
الحمضي القاعدي للماء .يجب أن تكون قيمة الرقم الهيدروجيني لمياه الشرب بين 6.5و.8.5
دعونا اآلن نلقي نظرة على العامل الثاني الذي يؤثر على جودة المياهيف مجموعة البيانات:
figure = px.histogram(data, x = "Hardness",
color = "Potability",
title= "Factors Affecting Water Quality:
)"Hardness
)(figure.show
يوضح الشكل أعاله توزيع عسرة hardnessالماءيف مجموعة البيانات .تعتمد عسرة الماء عادة
على مصدره ،لكن الماء الذي تصل قوته إلى 200-120ملليغرام صالح للشرب .دعنا اآلن نلقي
نظرة على العامل التالي الذي يؤثر على جودة المياه:
يمثل الشكل أعاله توزيع إجمالي المواد الصلبة الذائبةيف الماءيف مجموعة البيانات .تسمى جميع
المعادن العضوية وغير العضوية الموجودةيف الماء بالمواد الصلبة الذائبة .الماء الذي يحتوي على
عدد كبير جدًا من المواد الصلبة الذائبة شديد التمعدن .دعنا اآلن نلقي نظرة على العامل التالي
الذي يؤثر على جودة المياه:
يمثل الشكل أعاله توزيع الكلورامين ()chloramineيف الماءيف مجموعة البيانات .الكلورامين
والكلور من المطهرات المستخدمةيف أنظمة المياه العامة .دعنا اآلن نلقي نظرة على العامل التالي
الذي يؤثر على جودة المياه:
figure = px.histogram(data, x = "Sulfate",
color = "Potability",
title= "Factors Affecting Water Quality:
)"Sulfate
)(figure.show
149
يوضح الشكل أعاله توزيع الكبريتات ()sulfateيف الماءيف مجموعة البيانات .إنها مواد موجودة
بشكل طبيعييف المعادن والتربة والصخور .الماء الذي يحتوي على أقل من 500ملليغرام من
الكبريتات آمن للشرب .اآلن دعونا نرى العامل التالي:
يمثل الشكل أعاله توزيع موصلية المياه ()water conductivityيف مجموعة البيانات .الماء
موصل جيد للكهرباء ،لكن أنقى أشكال الماء ليس موصلًا جيدًا للكهرباء .المياه ذات التوصيل
الكهربائي أقل من 500صالحة للشرب .اآلن دعونا نرى العامل التالي:
يمثل الشكل أعاله توزيع الكربون العضوي ()organic carbonيف الماءيف مجموعة البيانات.
يأتي الكربون العضوي من انهيار المواد العضوية الطبيعية والمصادر االصطناعية .تعتبر المياه التي
تحتوي على أقل من 25ملليجرام من الكربون العضوي آمنة للشرب .دعنا اآلن نلقي نظرة على
العامل التالي الذي يؤثر على جودة مياه الشرب:
يمثل الشكل أعاله توزيع ثالثي الميثان ( )trihalomethanesأو ()THMفي الماءيف مجموعة
البيانات THMs .هي مواد كيميائية موجودةيف المياه المعالجة بالكلور .تعتبر المياه التي تحتوي
على أقل من 80ملليجرام من THMsآمنة للشرب .دعنا اآلن نلقي نظرة على العامل التالييف
مجموعة البيانات الذي يؤثر على جودة مياه الشرب:
figure = px.histogram(data, x = "Turbidity",
color = "Potability",
title= "Factors Affecting Water Quality:
)"Turbidity
)(figure.show
151
يمثل الشكل أعاله توزيع العكارة ()turbidityفي الماء .تعتمد عكارة الماء على عدد المواد
الصلبة الموجودةيف المعلق .تعتبر المياه ذات العكارة أقل من 5ملليغرام صالحة للشرب.
في القسم أعاله ،استكشفنا جميع الميزات التي تؤثر على جودة المياه .اآلن ،الخطوة التالية هي
تدريب نموذج التعلم اآللي لمهمة تحليل جودة المياه باستخدام بايثون .لهذه المهمة ،سأستخدم
مكتبة PyCaretيف بايثون .إذا لم تكن قد استخدمت هذه المكتبة من قبل ،فيمكنك تثبيتها
بسهولة على نظامك باستخدام األمر :pip
pip install pycaret
قبل تدريب نموذج التعلم اآللي ،دعنا نلقي نظرة على االرتباط ( )correlationبين جميع
الميزات فيما يتعلق بعمود القابلية للشرب ()Potability columnيف مجموعة البيانات:
()correlation = data.corr
)correlation["ph"].sort_values(ascending=False
اآلن فيما يلي كيف يمكنك معرفة أي خوارزمية تعلم اآللة هي األفضل لمجموعة البيانات هذه
باستخدام مكتبة PyCaretيف بايثون:
*from pycaret.classification import
clf = setup(data, target = "Potability", silent = True,
)session_id = 786
()compare_models
152
وفقًا للنتيجة أعاله ،فإن خوارزمية الغابة العشوائية )random forrest(rfهي األفضل لتدريب
نموذج التعلم اآللي لمهمة تحليل جودة المياه .لذلك دعونا ندرب النموذج ونفحص تنبؤاته:
)"model = create_model("rf
)predict = predict_model(model, data=data
()predict.head
النتائج المذكورة أعاله تبدو مرضية .آمل أن تكون قد أحببت مشروع التعلم اآللي هذا حول تحليل
جودة المياه باستخدام بايثون.
هذه هي الطريقة التي يمكنك بها تحليل جودة المياه وتدريب نموذج التعلم اآللي لتصنيف المياه
اآلمنة وغير اآلمنة للشرب .يُعد الحصول على مياه الشرب المأمونة أحد االحتياجات األساسية
لجميع البشر .من وجهة نظر قانونية ،يعتبر الحصول على مياه الشرب أحد حقوق اإلنسان
األساسية .تؤثر العديد من العوامل على جودة المياه ،كما أنها أحد مجاالت البحث الرئيسيةيف
التعلم اآللي.
153 Twitter
Twitter 24
Twitter Sentiment Analysis using Python
Twitterهو أحد منصات التواصل االجتماعي حيث يتمتع األشخاص بحرية مشاركة آرائهم
حول أي موضوع .نرى أحيانًا مناقشة قوية على Twitterحول رأي شخص ما تؤدي أحيانًا إلى
مجموعة من التغريدات السلبية .مع وضع ذلكيف االعتبار ،إذا كنت تريد معرفة كيفية إجراء تحليل
المشاعر ( )sentiment analysisعلى ،Twitterفهذه المقالة مناسبة لك.يف هذه المقالة،
سوف أطلعك على مهمة تحليل المشاعر على Twitterباستخدام بايثون.
Twitter
تحليل المشاعر مهمة معالجة اللغة الطبيعية ( .)natural language processingيجب على
جميع منصات وسائل التواصل االجتماعي مراقبة مشاعر المشاركينيف المناقشة .نرىيف الغالب
آراء سلبية على تويتر عندما تكون المناقشة سياسية .لذلك ،يجب أن تستمر كل منصةيف تحليل
المشاعر للعثور على نوع األشخاص الذين ينشرون الكراهية والسلبية على نظامهم األساسي.
بالنسبة لمهمة تحليل المشاعر على ،Twitterقمت بجمع مجموعة بيانات من Kaggleتحتوي
على تغريدات حول مناقشة طويلة داخل مجموعة من المستخدمين .مهمتنا هنا هي تحديد عدد
التغريدات السلبية واإليجابية حتى نتمكن من إعطاء نتيجة .لذلك،يف القسم أدناه ،سأقدم لك
مهمة تحليل المشاعر على Twitterباستخدام بايثون.
Twitter
لنبدأ مهمة تحليل المشاعر على Twitterمن خالل استيراد مكتبات بايثون ومجموعة البيانات
الالزمة:
= data
pd.read_csv("https://raw.githubusercontent.com/amankharwal/Web
)"site-data/master/twitter.csv
))(print(data.head
154
)يف مجموعة البيانات أعاله على التغريدات التي نحتاجtweet column(يحتوي عمود التغريدة
يتعين علينا تنظيف، ولكن للمضي قدمًا.إلى استخدامها لتحليل مشاعر المشاركينيف المناقشة
الكثير من األخطاء والرموز الخاصة األخرى ألن هذه التغريدات تحتوي على الكثير من األخطاء
: إذن إليك كيف يمكننا تنظيف عمود التغريدة.اللغوية
nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
from nltk.corpus import stopwords
import string
stopword=set(stopwords.words('english'))
def clean(text):
text = str(text).lower()
text = re.sub('\[.*?\]', '', text)
text = re.sub('https?://\S+|www\.\S+', '', text)
text = re.sub('<.*?>+', '', text)
text = re.sub('[%s]' % re.escape(string.punctuation), '',
text)
text = re.sub('\n', '', text)
text = re.sub('\w*\d\w*', '', text)
text = [word for word in text.split(' ') if word not in
stopword]
text=" ".join(text)
text = [stemmer.stem(word) for word in text.split(' ')]
text=" ".join(text)
return text
data["tweet"] = data["tweet"].apply(clean)
) لهذه التغريداتsentiment scores( الخطوة التالية هي حساب درجات المشاعر،اآلن
) أو محايدةNegative( ) أو سلبيةPosetive( وتعيين تسمية للتغريدات على أنها إيجابية
: إليك كيفية حساب درجات المشاعريف التغريدات.)Neutral(
from nltk.sentiment.vader import SentimentIntensityAnalyzer
nltk.download('vader_lexicon')
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["tweet"]]
155 Twitter
:دعنا اآلن نلقي نظرة على التصنيف األكثر شيوعًا المخصص للتغريدات وفقًا لدرجات المشاعر
x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])
اآلن دعنا. ما يعني أنها ليست إيجابية وال سلبية،)neutral( لذا فإن معظم التغريدات محايدة
:نلقي نظرة على إجمالي درجات المشاعر
print("Positive: ", x)
print("Negative: ", y)
print("Neutral: ", z)
156
مجموع التغريدات المحايدة أعلى بكثير من السلبية واإليجابية ،لكن من بين جميع التغريدات
السلبية أكبر من التغريدات اإليجابية ،لذلك يمكننا القول إن معظم اآلراء سلبية.
هذه هي الطريقة التي يمكنك بها أداء مهمة تحليل المشاعر على Twitterباستخدام لغة برمجة
بايثون .تحليل المشاعر مهمة معالجة اللغة الطبيعية .تحتاج جميع منصات وسائل التواصل
االجتماعي إلى التحقق من مشاعر األشخاص المشاركينيف المناقشة .آمل أن تكون قد أحببت
هذا المقال على تحليل المشاعر على Twitterباستخدام بايثون.
157
Squid 25
Game Sentiment Analysis using Python
تعد لعبة الحبار ( )squid gameحاليًا واحدة من أكثر العروض شيوعًا على .Netflixمن
الشائع جدًا أن األشخاص الذين لم يشاهدوا أي سلسلة ويب من قبل يشاهدونها أيضًا .أحد
أسباب ذلك هو آراء وآراء المشاهدين على وسائل التواصل االجتماعي .لذلك إذا كنت تريد معرفة
كيفية تحليل مشاعر الناس حول لعبة الحبار ،فهذه المقالة مناسبة لك.يف هذه المقالة ،سوف
آخذك خالل مهمة تحليل مشاعر لعبة الحبار باستخدام بايثون.
يتم تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل مشاعر لعبة الحبار من ،Kaggleوالتي
تم جمعهايف البداية من Twitterبينما كان األشخاص يشاركون بنشاط آرائهم حول لعبة الحبار.
لنبدأ مهمة تحليل مشاعر لعبة الحبار عن طريق استيراد مكتبات بايثون ومجموعة البيانات
الضرورية:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from wordcloud import WordCloud, STOPWORDS,
ImageColorGenerator
)"data = pd.read_csv("squid_game.csv
))(print(data.head
في االنطباعات األولى لمجموعة البيانات هذه ،الحظت قيمًا خاليةيف عمود ()user_location
يبدو أنها ال تؤثر على مهمة تحليل المشاعر .لذلك سوف أسقط هذا العمود:
))(print(data.isnull().sum
158
والتي لن تؤثر أيضًا على مهمة تحليل،) أيضًا على قيم خاليةuser_description( يحتوي عمود
: لذلك سأحذف هذا العمود أيضًا.المشاعر
def clean(text):
text = str(text).lower()
text = re.sub('\[.*?\]', '', text)
text = re.sub('https?://\S+|www\.\S+', '', text)
text = re.sub('<.*?>+', '', text)
text = re.sub('[%s]' % re.escape(string.punctuation), '',
text)
text = re.sub('\n', '', text)
text = re.sub('\w*\d\w*', '', text)
text = [word for word in text.split(' ') if word not in
stopword]
text=" ".join(text)
text = [stemmer.stem(word) for word in text.split(' ')]
text=" ".join(text)
return text
data["text"] = data["text"].apply(clean)
دعنا اآلن نلقي نظرة على الكلمات األكثر استخدامًايف آراء لعبة الحبار باستخدام سحابة الكلمات
سحابة الكلمات هي أداة تصوير البيانات تعرض الكلمات األكثر استخدامًا.)word cloud(
: إليك كيفية تصوير سحابة الكلماتيف عمود النص.بحجم أكبر
159
سأضيف هنا ثالثة أعمدة أخرىيف.اآلن دعنا ننتقل إلى مهمة تحليل المشاعريف لعبة الحبار
)Neutral( ) ومحايدةNegative( ) وسلبيةPositive( مجموعة البيانات هذه على أنها موجبة
:)يف عمود النصsentiment scores( من خالل حساب درجات المشاعر
nltk.download('vader_lexicon')
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["text"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["text"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["text"]]
data = data[["text", "Positive", "Negative", "Neutral"]]
print(data.head())
x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])
لذا فإن معظم آراء المستخدمين حيادية ،فلنلقِ اآلن نظرة على إجمالي كل درجة المشاعر قبل
التوصل إلى أي استنتاج:
)print("Positive: ", x
)print("Negative: ", y
)print("Neutral: ", z
إجمالي السلبيات أقل بكثير من اإليجابية ،لذلك يمكننا القول إن معظم اآلراء حول لعبة الحبار
إيجابية.
تعد لعبة الحبار حاليًا واحدة من أكثر العروض شيوعًا على .Netflixأحد أسباب ذلك هو آراء
وآراء المشاهدين على وسائل التواصل االجتماعي .آمل أن تكون قد أحببت هذا المقال حول
تحليل المشاعريف لعبة الحبار باستخدام بايثون.
161
Movie 26
Rating Analysis using Python
نشاهد جميعًا األفالم للترفيه ،والبعض منا ال يقيمها أبدًا ،بينما يقوم بعض المشاهدين دائمًا
بتقييم كل فيلم يشاهدونه .يساعد هذا النوع من المشاهدينيف تصنيف األفالم لألشخاص الذين
يراجعون مراجعات الفيلم قبل مشاهدة أي فيلم للتأكد من أنهم على وشك مشاهدة فيلم جيد.
لذلك ،إذا كنت جديدًايف علم البيانات وترغبيف معرفة كيفية تحليل تقييمات األفالم باستخدام
لغة برمجة بايثون ،فهذه المقالة مناسبة لك.يف هذه المقالة ،سوف أطلعك على مهمة تحليل
تصنيف األفالم ( )Movie Rating Analysisباستخدام بايثون.
يساعد تحليل التصنيف الذي قدمه مشاهدو الفيلم العديد من األشخاصيف تحديد ما إذا كانوا
سيشاهدون هذا الفيلم أم ال .لذلك ،بالنسبة لمهمة تحليل تصنيف الفيلم ،تحتاج أوالً إلى
مجموعة بيانات تحتوي على بيانات حول التصنيفات التي قدمها كل عارض .لهذه المهمة ،قمت
بجمع مجموعة بيانات من Kaggleتحتوي على ملفين:
.1يحتوي ملف واحد على بيانات حول معرف الفيلم ( )movie Idوعنوانه ()title
ونوعه (.)genre
.2ويحتوي الملف اآلخر على معرف المستخدم ( )user idومعرف الفيلم ( movie
)idوالتقييمات ( )ratingsالتي قدمها المستخدم والطابع الزمني للتصنيفات.
لنبدأ اآلن بمهمة تحليل تصنيف األفالم عن طريق استيراد مكتبات بايثون ومجموعات البيانات
الضرورية:
import numpy as np
import pandas as pd
)'movies = pd.read_csv("movies.dat", delimiter='::
))(print(movies.head
في الكود أعاله ،قمت فقط باستيراد مجموعة بيانات األفالم التي ال تحتوي على أي أسماء أعمدة،
لذلك دعونا نحدد أسماء األعمدة:
162
ال تحتوي مجموعة بيانات التصنيف أيضًا على أي أسماء أعمدة ،لذلك دعونا نحدد أسماء
األعمدة لهذه البيانات أيضًا:
]"ratings.columns = ["User", "ID", "Ratings", "Timestamp
))(print(ratings.head
سأقوم اآلن بدمج مجموعتي البيانات هاتينيف واحدة ،تحتوي مجموعتي البيانات هاتين على
عمود مشترك كمعرف ،والذي يحتوي على معرف الفيلم ( ،)movie IDلذلك يمكننا استخدام
هذا العمود كعمود مشترك لدمج مجموعتي البيانات:
)]"data = pd.merge(movies, ratings, on=["ID", "ID
))(print(data.head
163
نظرًا ألنها مهمة على مستوى المبتدئين ،سأقوم أوالً بإلقاء نظرة على توزيع تصنيفات جميع
األفالم التي قدمها المشاهدون:
()ratings = data["Ratings"].value_counts
numbers = ratings.index
quantity = ratings.values
import plotly.express as px
)fig = px.pie(data, values=quantity, names=numbers
()fig.show
لذلك ،وفقًا لمخطط الدائرة المجزأة ( )pie chartأعاله ،تم تصنيف معظم األفالم 8من قبل
المستخدمين .من الشكل أعاله ،يمكن القول إن معظم األفالم تم تصنيفها بشكل إيجابي.
نظرًا ألن الرقم 10هو أعلى تصنيف يمكن للمشاهد تقديمه ،فلنلقِ نظرة على أفضل 10أفالم
حصلت على 10تقييمات من قبل المشاهدين:
لذلك ،وفقًا لمجموعة البيانات هذه ،حصل ( )Joker2019على أعلى عدد 10تقييمات من
المشاهدين .هذه هي الطريقة التي يمكنك بها تحليل تقييمات األفالم باستخدام بايثون كمبتدئ
في علم البيانات.
هذه هي الطريقة التي يمكنك بها إجراء تحليل تصنيف الفيلم باستخدام لغة برمجة بايثون كمبتدئ
في علوم البيانات .يساعد تحليل التصنيفات التي قدمها مشاهدو الفيلم العديد من األشخاصيف
تحديد ما إذا كانوا سيشاهدون هذا الفيلم أم ال .آمل أن تكون قد أحببت هذه المقالة حول تحليل
تصنيف األفالم باستخدام بايثون.
165
Billionaires 27
Analysis with Python
يقول عدد المليارديرات ()Billionairesيف بلد ما الكثير عن بيئة األعمال ومعدل نجاح بدء
التشغيل والعديد من الميزات االقتصادية األخرى للبلد .لذلك إذا كنت تريد معرفة المزيد حول
كيفية إيجاد عالقات بين المليارديرات حول العالم ،فهذه المقالة مناسبة لك.يف هذه المقالة،
سوف أطلعك على مهمة تحليل المليارديرات باستخدام بايثون.
مجموعة البيانات التي أستخدمها لتحليل البيانات حول المليارديرات حول العالم برعاية مجلة
Forbesويتم تنزيلها من .Kaggleتحتوي مجموعة البيانات على معلومات حول المليارديرات
العالميينيف عام ،2021بمايف ذلك:
.1األسماء (.)Names
.3الدولة (.)Country
.4المصدر (.)Source
.5المرتبة (.)Rank
.6العمر (.)Age
.7الصناعة (.)Industry
فلنبدأ بمهمة تحليل المليارديرات عن طريق استيراد مكتبات بايثون ومجموعة البيانات الالزمة:
= data
pd.read_csv("https://raw.githubusercontent.com/amankharwal/Web
)"site-data/master/Billionaire.csv
))(print(data.head
166
قبل المضي قدمًا ،دعنا نرى ما إذا كانت مجموعة البيانات هذه تحتوي على قيم مفقودة أم ال:
))(print(data.isnull().sum
إذن ،تحتوي مجموعة البيانات هذه على 79قيمة مفقودةيف عمود العمر (،)Age column
فلنزيل هذه الصفوف:
()data = data.dropna
يحتوي عمود صافي الثروة ()NetWorthيف مجموعة البيانات هذه على عالمة $يف بداية صافي
ثروة المليارديرات وBيف النهاية .لذلك نحتاج إلى إزالة هذه العالمات وتحويل عمود صافي الثروة
إلى قيمة عائمة (:)float
("data["NetWorth"] = data["NetWorth"].str.strip)"$
)"data["NetWorth"] = data["NetWorth"].str.strip("B
)data["NetWorth"] = data["NetWorth"].astype(float
دعنا اآلن نلقي نظرة على أفضل 10مليارديرات وفقًا لصافي الثروة:
df = data.sort_values(by = ["NetWorth"],
)ascending=False).head(10
))plt.figure(figsize=(20, 10
)sns.histplot(x="Name", hue="NetWorth", data=df
)(plt.show
167
:) تضم أكبر عدد من أصحاب الملياراتdomains( نطاقات5 دعنا اآلن نلقي نظرة على أهم
a = data["Source"].value_counts().head()
index = a.index
sources = a.values
custom_colors = ["skyblue", "yellowgreen", 'tomato', "blue",
"red"]
plt.figure(figsize=(5, 5))
plt.pie(sources, labels=index, colors=custom_colors)
central_circle = plt.Circle((0, 0), 0.5, color='white')
fig = plt.gcf()
fig.gca().add_artist(central_circle)
plt.rc('font', size=12)
plt.title("Top 5 Domains to Become a Billionaire",
fontsize=20)
plt.show()
) تضم أكبر عدد من أصحابindustries( صناعات5 دعنا اآلن نلقي نظرة على أفضل
:المليارات
a = data["Industry"].value_counts().head()
index = a.index
industries = a.values
custom_colors = ["skyblue", "yellowgreen", 'tomato', "blue",
"red"]
plt.figure(figsize=(5, 5))
plt.pie(industries, labels=index, colors=custom_colors)
central_circle = plt.Circle((0, 0), 0.5, color='white')
fig = plt.gcf()
fig.gca().add_artist(central_circle)
plt.rc('font', size=12)
plt.title("Top 5 Industries with Most Number of Billionaires",
fontsize=20)
plt.show()
168
:) بها أكبر عدد من أصحاب الملياراتCountries( دول5 دعنا اآلن نلقي نظرة على أفضل
a = data["Country"].value_counts().head()
index = a.index
Countries = a.values
custom_colors = ["skyblue", "yellowgreen", 'tomato', "blue",
"red"]
plt.figure(figsize=(5, 5))
plt.pie(Countries, labels=index, colors=custom_colors)
central_circle = plt.Circle((0, 0), 0.5, color='white')
fig = plt.gcf()
fig.gca().add_artist(central_circle)
plt.rc('font', size=12)
plt.title("Top 5 Countries with Most Number of Billionaires",
fontsize=20)
plt.show()
169
يوضح التصوي ر أعاله أن الواليات المتحدة والصين هما البلدان التي يصبح معظم الناس من
أصحاب المليارات .وهذا يعني أن بيئة األعمال ومعدل نجاح بدء التشغيل جيد حقًايف الواليات
المتحدة والصين مقارنة ببقية العالم.
إذن هذه هي الطريقة التي يمكنك بها العثور على أنماط بين المليارديرات حول العالم لتحليل
بيئة األعماليف البلدان .يعتمد نجاح أي شركة أو شركة ناشئة كثيرًا على بيئة األعماليف بلد ما.يف
نهاية تحليل المليارديرات العالميين ،وجدت أن الصين والواليات المتحدة هما الدولتان اللتان
لديهما أكبر عدد من المليارديرات ،األمر الذي يخلص إلى أن بيئة األعمال ومعدل نجاح شركة
ناشئة أفضل بكثيريف الواليات المتحدة والصين مقارنة بالبقية .من العالم .آمل أن تكون قد أحببت
هذا المقال عن تحليل المليارديرات باستخدام بايثون.
170
Unemployment 28
Analysis with Python
تُقاس البطالة ( )Unemploymentمن خالل معدل البطالة ( )unemployment rateوهو
عدد األشخاص العاطلين عن العمل كنسبة مئوية من إجمالي القوى العاملة .لقد رأينا زيادة حادة
في معدل البطالة خالل ،Covid-19لذا فإن تحليل معدل البطالة يمكن أن يكون مشروعًا جيدًا
لعلم البيانات.يف هذا المقالة ،سوف أخوضكيف مهمة تحليل البطالة مع بايثون.
يتم احتساب معدل البطالة على أساس منطقة معينة ،لذلك لتحليل البطالة سأستخدم مجموعة
بيانات البطالةيف الهند .تحتوي مجموعة البيانات التي أستخدمها هنا على بيانات حول معدل
البطالةيف الهند خالل .Covid-19فلنبدأ مهمة تحليل البطالة عن طريق استيراد مكتبات بايثون
ومجموعة البيانات الضرورية:
= data
pd.read_csv("https://raw.githubusercontent.com/amankharwal/Web
)"site-data/master/unemployment.csv
))(print(data.head
دعونا نرى ما إذا كانت مجموعة البيانات هذه تحتوي على قيم مفقودة أم ال:
))(print(data.isnull().sum
171
لفهم هذه البيانات، لذلك. وجدت أن أسماء األعمدة غير صحيحة،أثناء تحليل القيم المفقودة
: سأعيد تسمية جميع األعمدة،بشكل أفضل
data.columns= ["States","Date","Frequency",
"Estimated Unemployment Rate",
"Estimated Employed",
"Estimated Labour Participation Rate",
"Region","longitude","latitude"]
:) بين ميزات مجموعة البيانات هذهcorrelation( دعنا اآلن نلقي نظرة على االرتباط
plt.style.use('seaborn-whitegrid')
plt.figure(figsize=(12, 10))
sns.heatmap(data.corr())
plt.show()
سألقي نظرة أوالً على العدد المقدر للموظفين.اآلن دعنا نتخيل البيانات لتحليل معدل البطالة
:وفقًا لمناطق مختلفة من الهند
data.columns= ["States","Date","Frequency",
"Estimated Unemployment Rate","Estimated
Employed",
"Estimated Labour Participation Rate","Region",
"longitude","latitude"]
plt.title("Indian Unemployment")
sns.histplot(x="Estimated Employed", hue="Region", data=data)
plt.show()
172
، لهذا.دعنا اآلن ننشئ لوحة تحكم لتحليل معدل البطالة لكل والية هندية حسب المنطقة
: sunburst سأستخدم مخطط
هذه هي الطريقة التي يمكنك بها تحليل معدل البطالة باستخدام لغة برمجة بايثون .تُقاس البطالة
من خالل معدل البطالة وهو عدد األشخاص العاطلين عن العمل كنسبة مئوية من إجمالي القوى
العاملة .أتمنى أن تكون قد أحببت هذا المقال حول تحليل معدل البطالة باستخدام بايثون.
174 WhatsApp
WhatsApp
يمكنك استخدام بيانات WhatsAppالخاصة بك للعديد من مهام علم البيانات مثل تحليل
المشاعر ( )sentiment analysisواستخراج الكلمات الرئيسية ()keyword extraction
والتعرف على الكيانات المسماة ( )named entity recognitionوتحليل النص والعديد من
مهام معالجة اللغة الطبيعية ( )natural language processingاألخرى .يعتمد ذلك أيضًا على
من تقوم بتحليل رسائل WhatsAppالخاصة بك ألنه يمكنك العثور على الكثير من المعلومات
من رسائل WhatsAppالخاصة بك والتي يمكن أن تساعدك أيضًايف حل مشاكل العمل.
قبل البدءيف مهمة تحليل WhatsApp Chatمع بايثون ،تحتاج إلى استخراج بيانات
WhatsAppالخاصة بك من هاتفك الذكي وهي مهمة سهلة للغاية .الستخراج محادثات
WhatsAppالخاصة بك ،فقط افتح أي دردشة مع شخص أو مجموعة واتبع الخطوات
المذكورة أدناه:
.1إذا كان لديك جهاز ،iPhoneفانقر فوق اسم جهة االتصال ( )Contact Nameأو
اسم المجموعة ( .)Group Nameإذا كان لديك هاتف ذكي يعمل بنظام
،Androidفانقر فوق النقاط الثالث أعاله.
.3ثم حدد بدون وسائط للبساطة إذا سألك ما إذا كنت تريد محادثاتك مع أو بدون وسائط.
.4ثم أرسل هذه الدردشة بالبريد اإللكتروني إلى نفسك وقم بتنزيلها على نظامك.
هذه هي الطريقة التي يمكنك بها بسهولة إجراء محادثات WhatsAppالخاصة بك مع أي
شخص أو مجموعة لمهمة تحليل دردشة .WhatsAppيف القسم أدناه ،سوف آخذك عبر تحليل
دردشة WhatsAppمع بايثون.
175
WhatsApp
الخاصة بك لمهمة تحليلWhatsApp آمل أن تكون قد فهمت اآلن كيفية الحصول على بيانات
لنبدأ اآلن هذه المهمة عن طريق استيراد مكتبات بايثون. مع بايثونWhatsApp دردشة
:الضرورية التي نحتاجها لهذه المهمة
import regex
import pandas as pd
import numpy as np
import emoji
from collections import Counter
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS,
ImageColorGenerator
لذا أقترح،)preparation( تتطلب مجموعة البيانات التي نستخدمها هنا الكثير من التحضير
.WhatsApp عليك إلقاء نظرة على البيانات التي تستخدمها قبل بدء مهمة تحليل الدردشة عبر
سأبدأ بكتابة بعض دوال بايثون إلعداد،نظرًا ألنني قمت بالفعل بتصفح مجموعة البيانات
:البيانات قبل استيرادها
def date_time(s):
pattern = '^([0-9]+)(\/)([0-9]+)(\/)([0-9]+), ([0-
9]+):([0-9]+)[ ]?(AM|PM|am|pm)? -'
result = regex.match(pattern, s)
if result:
return True
return False
def find_author(s):
s = s.split(":")
if len(s)==2:
return True
else:
return False
def getDatapoint(line):
splitline = line.split(' - ')
dateTime = splitline[0]
date, time = dateTime.split(", ")
message = " ".join(splitline[1:])
if find_author(message):
splitmessage = message.split(": ")
author = splitmessage[0]
message = " ".join(splitmessage[1:])
else:
author= None
return date, time, author, message
:pandas دعنا اآلن نستورد البيانات ونجهزها بطريقة يمكننا استخدامهايف إطار بيانات
data = []
conversation = 'WhatsApp Chat with Sapna.txt'
WhatsApp 176
: هذهWhatsApp اآلن دعنا نلقي نظرة على العدد اإلجمالي للرسائل بين دردشة
177
total_messages = df.shape]0[
print(total_messages)
) الموجودة بين الدردشات ونلقي نظرة على الرموزemojis( اآلن دعنا نستخرج الرموز التعبيرية
:التعبيرية الموجودةيف هذه الدردشة
def split_count(text):
emoji_list = []
data = regex.findall(r'\X',text)
for word in data:
if any(char in emoji.UNICODE_EMOJI for char in word):
emoji_list.append(word)
return emoji_list
df['emoji'] = df["Message"].apply(split_count)
emojis = sum(df['emoji'].str.len())
print(emojis)
الموجودةيف هذه الدردشة ونلقي نظرة على اإلحصاءاتURL دعنا اآلن نستخرج عناوين
:النهائية
URLPATTERN = r'(https?://\S+)'
df['urlcount'] = df.Message.apply(lambda x:
regex.findall(URLPATTERN, x)).str.len()
links = np.sum(df.urlcount)
دعنا اآلن نجهز هذه البيانات للحصول على مزيد من األفكار لتحليل جميع الرسائل المرسلةيف
:هذه الدردشة بمزيد من التفصيل
messages_df['Word_Count'] =
messages_df['Message'].apply(lambda s : len(s.split(' ')))
messages_df["MessageCount"]=1
import plotly.express as px
fig = px.pie(emoji_df, values='count', names='emoji')
fig.update_traces(textposition='inside',
textinfo='percent+label')
fig.show()
هذه من خالل رسمWhatsApp دعنا اآلن نلقي نظرة على الكلمات األكثر استخدامًايف دردشة
:)word cloud( سحابة الكلمات
دعنا اآلن نلقي نظرة على الكلمات األكثر استخدامًا من قبل كل شخص من خالل تخيل سحابتين
:مختلفتين من الكلمات
هذه هي الطريقة التي يمكننا بها بسهولة تحليل أي دردشة WhatsAppبينك وبين صديقك أو
عميلك أو حتى مجموعة من األشخاص .يمكنك أيضًا استخدام هذه البياناتيف العديد من المهام
األخرى الخاصة بمعالجة اللغة الطبيعية .أتمنى أن تكون قد أحببت هذه المقالة حول مهمة تحليل
دردشة WhatsAppمع بايثون.
181 WhatsApp
WhatsApp 30
WhatsApp Chat Sentiment Analysis using
Python
يعد WhatsAppمصدرًا رائعًا للبيانات لتحليل العديد من األنماط والعالقات بين شخصين أو
أكثر يتحدثون شخصيًا أو حتىيف مجموعات .إذا كنت تريد أن تعرف كيف يمكننا تحليل مشاعر
دردشة ،WhatsAppفهذه المقالة مناسبة لك.يف هذه المقالة ،سوف أطلعك على مهمة تحليل
المشاعريف دردشة WhatsAppباستخدام بايثون.
WhatsApp
لتحليل مشاعر دردشة ،WhatsAppنحتاج إلى جمع البيانات من .WhatsAppيجب أن
يستخدم معظمكم تطبيق المراسلة هذا ،لذلك لجمع البيانات حول الدردشة ،ما عليك سوى اتباع
الخطوات المذكورة أدناه:
.1لآليفون:
.4ألجهزة األندرويد:
سترى خيارًا إلرفاق الوسائط أثناء تصدير الدردشة .من أجل البساطة ،من األفضل عدم إرفاق
الوسائط .أخيرًا ،أدخل بريدك اإللكتروني وستجد دردشة WhatsAppيف صندوق الوارد الخاص
بك.
182
WhatsApp
سأبدأ هذه المهمة. باستخدام بايثونWhatsApp لنبدأ اآلن بمهمة تحليل مشاعر الدردشة عبر
ليستWhatsApp بتحديد بعض الوظائف المساعدة ألن البيانات التي نحصل عليها من
إلعداد بياناتك لمهمة، لذلك.مجموعة بيانات جاهزة لالستخداميف أي نوع من مهام علم البيانات
: ما عليك سوى تحديد جميع الدوال على النحو المحدد أدناه،تحليل المشاعر
import re
import pandas as pd
import numpy as np
import emoji
from collections import Counter
import matplotlib.pyplot as plt
from PIL import Image
from wordcloud import WordCloud, STOPWORDS,
ImageColorGenerator
# Extract Time
def date_time(s):
pattern = '^([0-9]+)(\/)([0-9]+)(\/)([0-9]+), ([0-
9]+):([0-9]+)[ ]?(AM|PM|am|pm)? -'
result = re.match(pattern, s)
if result:
return True
return False
# Finding Messages
def getDatapoint(line):
splitline = line.split(' - ')
dateTime = splitline[0]
date, time = dateTime.split(", ")
message = " ".join(splitline[1:])
if find_author(message):
splitmessage = message.split(": ")
author = splitmessage[0]
message = " ".join(splitmessage[1:])
else:
author= None
return date, time, author, message
ستعمل.ال يهم إذا كنت تستخدم مجموعة بيانات دردشة جماعية أو محادثتك مع شخص واحد
جميع الدوال المحددة أعاله على إعداد بياناتك لمهمة تحليل المشاعر وأي مهمة تتعلق بعلم
183 WhatsApp
باستخدام الدوالWhatsApp اآلن إليك كيف يمكننا إعداد البيانات التي جمعناها من.البيانات
:المذكورة أعاله
data = []
conversation = 'WhatsApp Chat with Sapna.txt'
with open(conversation, encoding="utf-8") as fp:
fp.readline()
messageBuffer = []
date, time, author = None, None, None
while True:
line = fp.readline()
if not line:
break
line = line.strip()
if date_time(line):
if len(messageBuffer) > 0:
data.append([date, time, author, '
'.join(messageBuffer)])
messageBuffer.clear()
date, time, author, message = getDatapoint(line)
messageBuffer.append(message)
else:
messageBuffer.append(line)
: باستخدام بايثونWhatsApp اآلن إليك كيف يمكننا تحليل مشاعر دردشة
data = df.dropna()
from nltk.sentiment.vader import SentimentIntensityAnalyzer
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["Message"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["Message"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["Message"]]
print(data.head())
x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])
لذا ،فإن البيانات التي استخدمتها تشير إلى أن معظم الرسائل بيني وبين الشخص اآلخر محايدة
( .)neutralمما يعني أنه ليس إيجابيًا ( )positiveأو سلبيًا (.)negative
إذن هذه هي الطريقة التي يمكننا بها أداء مهمة تحليل المشاعريف دردشة .WhatsAppيعد
WhatsAppمصدرًا رائعًا للبيانات لمهمة تحليل المشاعر وكل مهمةيف علم البيانات تعتمد على
معالجة اللغة الطبيعية .آمل أن تكون قد أحببت هذه المقالة حول مهمة تحليل المشاعريف دردشة
WhatsAppباستخدام بايثون.
185 Covid-19
Covid-19
تم تقديم العديد من اللقاحات حتى اآلن لمحاربة .Covid-19ال يوجد لقاح يضمن دقة ٪100
حتى اآلن ،لكن معظم الشركات المصنعة تدعي أن لقاحها ليس دقيقًا بنسبة ،٪100ولكن مع
ذلك ،فإنه سينقذ حياتك من خالل إعطائك مناعة.
وهكذا ،يحاول كل بلد تطعيم جزء كبير من سكانه حتى ال يعتمد على لقاح واحد .هذا ما سأقوم
بتحليلهيف هذه المقالة ،وهو عدد اللقاحات التي تستخدمها كل دولة لمحاربة .Covid-19يف
القسم أدناه ،سوف آخذك من خالل برنامج تعليمي لعلم البيانات حول تحليل لقاحات Covid-
19باستخدام بايثون.
Covid-19
مجموعة البيانات التي سأستخدمها هنا لمهمة تحليل لقاحات covid-19مأخوذة من .Kaggle
لنبدأ باستيراد مكتبات بايثون ومجموعة البيانات الضرورية:
دعنا اآلن نستكشف هذه البيانات قبل أن نبدأيف تحليل اللقاحات التي تأخذها البلدان:
()data.describe
)pd.to_datetime(data.date
)(data.country.value_counts
تتكون المملكة المتحدة من إنجلترا واسكتلندا وويلز وأيرلندا الشمالية .ولكنيف البيانات أعاله،
تم ذكر هذه البلدان بشكل منفصل بنفس القيم كمايف المملكة المتحدة .لذلك قد يكون هذا خطأ
أثناء تسجيل هذه البيانات .لذلك دعونا نرى كيف يمكننا إصالح هذا الخطأ:
data = data[data.country.apply(lambda x: x not in ["England",
])]""Scotland", "Wales", "Northern Ireland
()data.country.value_counts
()data.vaccines.value_counts
187 Covid-19
إذن لدينا جميع لقاحات Covid-19تقريبًا متوفرةيف مجموعة البيانات هذه .اآلن سوف أقوم
بإنشاء إطار بيانات جديد من خالل اختيار أعمدة اللقاح ( )vaccineوالدولة ( )countryفقط
الستكشاف اللقاح الذي يتم تناولهيف أي دولة:
]]"df = data[["vaccines", "country
()df.head
دعنا اآلن نرى عدد البلدان التي تأخذ كل اللقاحات المذكورةيف هذه البيانات:
}{ = _dict
for i in df.vaccines.unique():
dict_[i] = [df["country"][j] for j in
]df[df["vaccines"]==i].index
188
vaccines = {}
for key, value in dict_.items():
vaccines[key] = set(value)
for i, j in vaccines.items():
print(f"{i}:>>{j}")
:اآلن دعنا نتخيل هذه البيانات إللقاء نظرة على مجموعة اللقاحات التي يستخدمها كل بلد
import plotly.express as px
import plotly.offline as py
189 Covid-19
إذن هذه هي الطريقة التي يمكننا بها تحليل نوع اللقاحات التي يأخذها كل بلد اليوم .يمكنك
استكشاف المزيد من األفكار من مجموعة البيانات هذه حيث يوجد الكثير الذي يمكنك القيام
به باستخدام هذه البيانات .آمل أن تكون قد أحببت هذا المقال حول تحليل لقاحات Covid-
19باستخدام بايثون.
190
33
Video Game Sales Prediction with Python
تحليل مبيعات ألعاب الفيديو ( )Video game sales analysisهو بيان مشكلة شائع على
.Kaggleيمكنك العمل على هذه المشكلة لتحليل مبيعات أكثر من 16500لعبة أو يمكنك
أيضًا تدريب نموذج التعلم اآللي للتنبؤ بمبيعات ألعاب الفيديو .لذلك إذا كنت تريد معرفة كيفية
تدريب نموذج تنبؤ بمبيعات ألعاب الفيديو ،فهذه المقالة مناسبة لك.يف هذه المقالة ،سأوجهك
خالل مهمة تعلم اآللة حول تدريب نموذج توقع مبيعات لعبة فيديو باستخدام بايثون.
تحليل بيانات المبيعات ألكثر من 16500لعبة هو بيان مشكلة شائع جدًا على .Kaggleيمكنك
إما حل هذه المشكلة للعثور على العديد من األنماط ( )patternsوالعالقات ()relationships
بين العوامل التي تؤثر على مبيعات ألعاب الفيديو ،أو يمكنك استخدام مجموعة البيانات هذه
للتنبؤ بمبيعات ألعاب الفيديويف المستقبل .لذلكيف القسم أدناه ،سأوجهك خالل كيفية تدريب
نموذج التعلم اآللي للتنبؤ بمبيعات ألعاب الفيديو باستخدام بايثون.
تحتوي مجموعة البيانات التي أستخدمها لهذه المهمة على قائمة بألعاب الفيديو ومبيعاتها .لنبدأ
هذه المهمة عن طريق استيراد مكتبات بايثون ومجموعة البيانات الضرورية:
)"data = pd.read_csv("vgsales.csv
))(print(data.head
دعنا اآلن نرى ما إذا كانت مجموعة البيانات هذه تحتوي على قيم خالية:
))(print(data.isnull().sum
191
data = data.dropna)(
: فئات من األلعاب مبيعًا10 دعنا نلقي نظرة على أفضل،قبل تدريب النموذج
:) بين ميزات مجموعة البيانات هذهcorrelation( دعنا اآلن نلقي نظرة على االرتباط
print(data.corr())
sns.heatmap(data.corr(), cmap="winter_r")
plt.show)(
192
دعنا اآلن نرى كيفية تدريب نموذج التعلم اآللي للتنبؤ بمبيعات ألعاب الفيديو باستخدام بايثون .
سأقوم بإعداد البيانات عن طريق تخزين الميزات التي نحتاجها لتدريب هذا النموذجيف المتغير
xوتخزين العمود الهدفيف المتغير: y
ه ذه هي الطريقة التي يمكننا بها تدريب نموذج التعلم اآللي للتنبؤ بمبيعات ألعاب الفيديو .هذا
بيان مشهور لمشكلة Kaggleيمكنك استخدامه لتحسين مهاراتكيف العمل مع البيانات
والتدريب على نموذج التعلم اآللي .آمل أن تكون قد أحببت هذه المقالة حول كيفية تدريب
نموذج التنبؤ بمبيعات ألعاب الفيديو باستخدام بايثون.
193 Uber
Uber
من خالل تحليل رحالت ،Uberيمكننا رسم العديد من األنماط ،مثل أي يوم يحتوي على أعلى
وأقل عدد أو أكثر الساعات ازدحامًا لـ Uberوالعديد من األنماط األخرى .تستند مجموعة
البيانات التي أستخدمها هنا إلى رحالت Uberمن نيويورك ،وهي مدينة بها نظام نقل معقد
للغاية مع مجتمع سكني كبير.
تحتوي مجموعة البيانات على بيانات لحوالي 4.5مليون بيك أبيف مدينة نيويورك من أبريل إلى
سبتمبر و 14.3مليون بيك أب من يناير إلى يونيو .2015يمكنك فعل الكثير باستخدام مجموعة
البيانات هذه بدالً من مجرد تحليلها .لكنيف الوقت الحالي،يف القسم أدناه ،سوف آخذك إلى
تحليل رحالت Uberباستخدام بايثون.
Uber
سأبدأ مهمة تحليل رحالت Uberعن طريق استيراد مكتبات بايثون ومجموعة البيانات الالزمة:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
)"data = pd.read_csv("uber.csv
)data["Date/Time"] = data["Date/Time"].map(pd.to_datetime
)(data.head
تحتوي هذه البيانات على بيانات حول التاريخ والوقت وخط العرض وخط الطول وعمود أساسي
يحتوي على رمز تابع لـ .uber pickupيمكنك الحصول على المزيد من مجموعات البيانات
194
لمهمة تحليل رحالت Uberمن هنا ،يف الوقت الحالي ،دعنا نجهز البيانات التي أستخدمها هنا
لتحليل رحالت Uberوفقًا لأليام والساعات:
)data["Day"] = data["Date/Time"].apply(lambda x: x.day
data["Weekday"] = data["Date/Time"].apply(lambda x:
))(x.weekday
)data["Hour"] = data["Date/Time"].apply(lambda x: x.hour
))(print(data.head
لذلك أعددت هذه البيانات وفقًا لأليام والساعات ،حيث إنني أستخدم رحالت Uberلشهر
سبتمبر ،لذلك دعونا نلقي نظرة على كل يوم لمعرفة اليوم الذي كانت فيه رحالت Uberهي
األعلى:
)}'sns.set(rc={'figure.figsize)10 ,12(:
)]"sns.distplot(data["Day
من خالل النظر إلى الرحالت اليومية ،يمكننا القول إن رحالت Uberترتفعيف أيام العمل
وتنخفضيف عطالت نهاية األسبوع .اآلن دعنا نحلل رحالت Uberوفقًا للساعات:
)]"sns.distplot(data["Hour
195 Uber
وفقًا لبيانات كل ساعة ،تقل رحالت Uberبعد منتصف الليل ثم تبدأيف الزيادة بعد الساعة 5
صباحًا وتستمر الرحالتيف االرتفاع حتى الساعة 6مساءً بحيث تكون الساعة 6مساءً هي أكثر
الساعات ازدحامًا لـ Uberثم تبدأ الرحالتيف التناقص .اآلن دعنا نحلل رحالت Uberوفقًا
أليام األسبوع:
)]"sns.distplot(data["Weekday
في الشكل 0أعاله يشير إلى يوم األحد ،وفي أيام األحد ،تكون رحالت Uberوأكثر من أيام
السبت ،لذا يمكننا القول إن األشخاص يستخدمون Uberأيضًا للتنزه بدالً من الذهاب إلى العمل
فقط.يف أيام السبت ،تكون رحالت Uberهي األدنى وفي يوم االثنين هي األعلى .دعنا اآلن نلقي
نظرة على االرتباط ( )correlationبين الساعات وأيام األسبوعيف رحالت :Uber
نظرًا ألننا نمتلك بيانات حول خطوط الطول والعرض ،فيمكننا أيضًا رسم كثافة رحالت Uber
وفقًا لمناطق مدينتك الجديدة:
هذه هي الطريقة التي يمكننا بها تحليل رحالت Uberلمدينة نيويورك .بعض االستنتاجات التي
حصلت عليها من هذا التحليل هي:
آمل أن تكون قد أحببت هذه المقالة حول تحليل رحالت Uberباستخدام بايثون.
198 Google
Google
ال تمنح Googleالكثير من الوصول إلى البيانات المتعلقة بطلبات البحث اليومية ،ولكن يمكن
استخدام تطبيق آخر من Googleيُعرف باسم Google Trendsلمهمة تحليل بحث
.Googleتوفر Google Trendsواجهة برمجة تطبيقات APIيمكن استخدامها لتحليل
عمليات البحث اليومية على .Googleتُعرف واجهة برمجة التطبيقات هذه باسم ،pytrends
ويمكنك تثبيتها بسهولةيف أنظمتك باستخدام األمر pip؛
pip install pytrends
أتمنى أن تكون قد قمت اآلن بتثبيت مكتبة pytrendsيف أنظمتك بسهولة ،فلنبدأ اآلن بمهمة
تحليل بحث Googleعن طريق استيراد مكتبات بايثون الضرورية:
Machine " تتم معظم طلبات البحث المستندة إلى، وفقًا للنتائج المذكورة أعاله،لذلك
:)bar chart( يمكننا أيضًا رسم هذه البيانات باستخدام مخطط شريطي. "يف الصينLearning
" كان محط اهتمام العديد من الشركاتMachine Learning" نظرًا ألننا نعلم جميعًا أن
فلنلقِ نظرة على اتجاه عمليات البحث،والطالب على مدار السنوات الثالث أو األربع الماضية
" أو انخفضMachine Learning" لمعرفة كيف زاد إجمالي استعالمات البحث المستندة إلى
:Google على
لذلك يمكننا أن نرى أن عمليات البحث القائمة على " "Machine Learningعلى Google
بدأتيف الزيادةيف عام 2017وتم إجراء أعلى عمليات البحثيف عام 2020حتى اليوم .هذه هي
الطريقة التي يمكننا بها تحليل عمليات بحث Googleبناءً على أي كلمة رئيسية .يمكن ألي
نشاط تجاري إجراء تحليل بحث Googleلفهم ما يبحث عنه األشخاص على Googleيف أي
وقت .أتمنى أن تكون هذه المقالة قد أحببت تحليل بحث Googleباستخدام بايثون.
201
يوجد اليوم العديد من محللي البيانات الذين يأتون من خلفية غير برمجية .إذا كنت من خلفية
تجارية ،فقد تعرف ما هي الميزانية المالية .باختصار ،إنه تقرير مفصل عن دخل ونفقات الحكومة
عن سنة مالية.
قد تحصل على مهمة تحليل الموازنة المالية لبلد ما كل عام إذا كنت تعمل كمحلل بياناتيف
مجال اإلعالم واالتصاالت ،حيث يتعين على وسائل اإلعالم شرح أولويات الحكومة للسنة
المالية الكاملة.يف القسم أدناه ،سوف آخذك من خالل برنامج تعليمي حول كيفية أداء مهمة تحليل
الموازنة المالية باستخدام بايثون.
أتمنى أن تكون قد فهمت اآلن ما هي الموازنة المالية ومتى قد تحتاج إلى تحليلها كمحلل بيانات.
دعونا نرى كيف يمكننا أداء مهمة تحليل الموازنة المالية باستخدام بايثون .سأبدأ هذه المهمة عن
طريق استيراد مكتبات بايثون الضرورية ومجموعة بيانات تحتوي على بيانات حول الموازنة
المالية للهند لعام .2021
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
)"data = pd.read_csv("India_budget_2021.csv
)(data.head
دعونا نلقي نظرة على جميع األقسام التي تغطيها هذه الموازنة:
)print(data
202
203
يمكنني رؤية القيم المفقودة ()NaNفي مجموعة البيانات هذه ،دعنا نزيل قيم NaNونتابع
مهمة تحليل الميزانية المالية باستخدام بايثون:
()data.dropna
أستطيع أن أرى أنه ليست كل األقسام التي تغطيها مجموعة البيانات هذه هي األقسام الرئيسية،
حيث يمكن تغطية بعض األ قساميف فئة أخرى .لذلك دعونا نجهز البيانات عن طريق اختيار
األقسام الرئيسية فقط ووضع جميع األقسام األخرىيف الفئة األخرى:
دعنا اآلن نرسم هذه البيانات إللقاء نظرة على أولويات الحكومة للسنة المالية:
يمكننا أن نرى أن قسم المالية ( )finance departmentتحصل على أكبر حصة من الميزانية
اإلجمالية للحكومة .دعنا اآلن نرسم هذه البياناتيف مخطط دونات ( )donut plotللحصول
على رؤية واضحة لتوزيع األموال بين جميع األقسام:
يمكننا أن نرى أن قسم المالية تحصل على ٪40من األموال .هذه هي الطريقة التي يمكننا بها
تحليل مجموعة البيانات التي تحتوي على بيانات حول إيرادات ونفقات الحكومة لسنة مالية.
آمل أن تكون قد أحببت هذا المقال حول تحليل الميزانية المالية باستخدام بايثون.
205
Best 37
Streaming Service Analysis with Python
هناك الكثير من المنافسة بين جميع خدمات البث الرئيسية مثل Netflixو Prime Videoو
Huluو .Disney+بصفتك عالم بيانات ،قد تكون مهمة رائعة جدًا بالنسبة لك أن تجد أفضل
خدمة بث ( )Streaming Serviceمن بينها.يف هذه المقالة ،سأقدم لك مشروع علم البيانات
حول أفضل تحليل لخدمة البث باستخدام بايثون.
لتحليل أفضل خدمة بث ،سأستخدم تقييمات العروض على جميع المنصات الرئيسية مثل
Netflixو Prime Videoو Huluو .Disney+
تحتوي مجموعة البيانات التي سأستخدمها لمهمة تحليل أفضل خدمة بث على قائمة شاملة
بجميع العروض التلفزيونية المتوفرة على األنظمة األساسية األربعة التي نقوم بمقارنتهايف هذه
المهمة.
أنا أستخدم مجموعة البيانات هذه للعثور على أفضل خدمة بث ولكن كمبتدئ ،يمكنك أيضًا
استخدام مجموعة البيانات هذه لمهام مثل:
لنبدأ اآلن بمهمة تحليل أفضل خدمة بث باستخدام بايثون .سأبدأ هذه المهمة عن طريق استيراد
جميع المكتبات ومجموعة البيانات الضرورية:
import plotly
import plotly.express as px
from plotly.subplots import make_subplots
import seaborn as sns
import matplotlib.pyplot as plt
)'tv_shows = pd.read_csv('tv_shows.csv
)(tv_shows.head
206
يمكن إنجاز. فلن نحتاج إلى استخدام خوارزميات التعلم اآللي هنا،نظرًا ألننا نحلل البيانات فقط
.معظم العمل من خالل رسم وتحليل تقييمات العروض على منصات البث
سأبدأيف إعداد البيانات.دعنا نجهز مجموعة البيانات حتى نتمكن من تحليل البيانات بسهولة
:)title of the shows( بإسقاط القيم المكررة بناءً على عنوان العروض
tv_shows.drop_duplicates(subset='Title',
keep='first',inplace=True(
سأقوم بملء القيم المفقودةيف البيانات باألصفار ثم تحويلها إلى أنواع،يف قسم الكود أدناه،اآلن
:بيانات عدد صحيح
tv_shows['Rotten Tomatoes'] = tv_shows['Rotten
Tomatoes'].fillna('0%')
tv_shows['Rotten Tomatoes'] = tv_shows['Rotten
Tomatoes'].apply(lambda x : x.rstrip('%'))
tv_shows['Rotten Tomatoes'] = pd.to_numeric(tv_shows['Rotten
Tomatoes'])
tv_shows['IMDb'] = tv_shows['IMDb'].fillna(0)
tv_shows['IMDb'] = tv_shows['IMDb']*10
tv_shows['IMDb'] = tv_shows['IMDb'].astype('int')
وNetflix ثانيةيف األعمدة المسماة0 و1 سيكون رسم البيانات أمرًا سهالً إذا حصلنا على
قد يكون هناك احتمال أن.)categorical( بتنسيق فئويPrime Video وDisney وHulu
:يكون العرض نفسه متاحًايف أكثر من منصة واحدة
tv_shows_long=pd.melt(tv_shows[['Title','Netflix','Hulu','Disn
ey+',
'Prime
Video']],id_vars=['Title'],
var_name='StreamingOn',
value_name='Present')
tv_shows_long = tv_shows_long[tv_shows_long['Present'] == 1]
tv_shows_long.drop(columns=['Present'],inplace=True)
سأقوم اآلن بدمج هذه البيانات مع البيانات التي بدأنا بها ولكني سأقوم بإسقاط بعض األعمدة
:غير المرغوب فيها
207
tv_shows_both_ratings =
tv_shows_combined[(tv_shows_combined.IMDb > 0) &
tv_shows_combined['Rotten Tomatoes'] > 0]
tv_shows_combined.groupby('StreamingOn').Title.count().plot(ki
nd='bar')
ً سأستخدم أوال.اآلن دعنا نرسم البيانات للعثور على أفضل خدمة بث بناءً على تقييماتهم
:) لقياس تقييمات المحتوى وحداثة منصة البثviolin charts( مخططات الكمان
figure = []
figure.append(px.violin(tv_shows_both_ratings, x =
'StreamingOn', y = 'IMDb', color='StreamingOn'))
figure.append(px.violin(tv_shows_both_ratings, x =
'StreamingOn', y = 'Rotten Tomatoes', color='StreamingOn'))
fig = make_subplots(rows=2, cols=4, shared_yaxes=True)
for i in range(2):
for j in range(4):
fig.add_trace(figure[i]['data'][j], row=i+1, col=j+1)
اآلن ،دعنا نستخدم مخطط مبعثر ( )scatter plotلمقارنة التقييمات بين IMDBو Rotten
Tomatoesلمقارنة أي منصة بث لديها أفضل التقييماتيف كل من منصات تصنيف المستخدم:
px.scatter(tv_shows_both_ratings, x='IMDb',
)' y='Rotten Tomatoes',color='StreamingOn
.1تحتوي مقاطع فيديو Huluو Netflixو Amazonعلى بيانات مهمة .مع زيادة
المحتوى ،تنخفض الجودة لجميع الثالثة.
.2أصبح Prime Videosأكثر كثافةيف النصف العلوي عند النظر إلى IMDBويعمل
بشكل جيديف الوضع البارد.
باستخدام مخطط التبعثر يمكننا أن نالحظ أنه من الواضح تمامًا أن Amazon Primeيعمل
جيدًايف الربع الرابع .حتى باستخدام المخطط الشريطي ،يمكننا مالحظة أن Amazon Prime
كانت تحتوي على كمية كبيرة من المحتوى .لذا بالنظر إلى جميع منصات البث ،يمكننا أن نستنتج
أن Amazon Primeأفضل من حيث الجودة والكمية.
آمل أن تكون قد أحببت هذه المقالة حول مشروع علم البيانات حول تحليل أفضل خدمة البث
باستخدام لغة برمجة بايثون.
210
Birth Rate 38
Analysis with python
والتي تقدمها،دعنا نلقي نظرة على البيانات المتاحة مجانًا عن الوالداتيف الواليات المتحدة
. births.csv يمكن العثور على هذه البياناتيف.)CDC( مراكز السيطرة على األمراض
import pandas as pd
births = pd.read_csv("births.csv") print(births.head())
births['day'].fillna(0, inplace=True) births['day'] =
births['day'].astype(int)
هناك بعض الميزات المثيرة لالهتمام التي يمكننا سحبها من مجموعة البيانات هذه باستخدام
أدوات . Pandasيجب أن نبدأ بتنظيف البيانات قليالً ،وإزالة القيم المتطرفة ( )outliersالتي
تسببها التواريخ المكتوبة بشكل خاطئ ( )mistyped datesأو القيم المفقودة ( missing
.)valuesإحدى الطرق السهلة إلزالة كل ذلك مرة واحدة هي قص القيم المتطرفة ،وسنفعل ذلك
من خالل عملية قص سيجما ( )sigma-clippingالقوية:
births['dayofweek'] = births.index.dayofweek
'births.pivot_table('births', index='dayofweek,
()columns='decade', aggfunc='mean').plot
plt.gca().set_xticklabels(['Mon', 'Tues', 'Wed', 'Thurs',
)]''Fri', 'Sat', 'Sun
;)'plt.ylabel('mean births by day
()plt.show
212
يبدو أن الوالدات أقل شيوعًايف عطالت نهاية األسبوع منهايف أيام األسبوع! الحظ أن التسعينيات
واأللفينيات من القرن الماضي مفقودة ألن بيانات مركز السيطرة على األمراض تحتوي فقط على
شهر الميالد بدءًا من عام .1989
وجهة نظر أخرى مثيرة لالهتمام هي رسم متوسط عدد المواليد حسب اليوم من السنة .دعنا أوالً
نجمع البيانات حسب الشهر واليوم بشكل منفصل:
births_month = births.pivot_table('births',
)][births.index.month, births.index.day
))(print(births_month.head
بالتركيز على الشهر واليوم فقط ،لدينا اآلن سلسلة زمنية تعكس متوسط عدد المواليد حسب
تاريخ السنة .من هذا ،يمكننا استخدام طريقة plotلرسم البيانات .يكشف عن بعض االتجاهات
المثيرة لالهتمام:
Amazon 39
Amazon Product Reviews
Sentiment Analysis with Python
Amazonهي شركة أمريكية متعددة الجنسيات تركز على التجارة اإللكترونية والحوسبة السحابية
والبث الرقمي ومنتجات الذكاء االصطناعي .لكنها معروفة بشكل أساسي بمنصة التجارة
اإللكترونية الخاصة بها والتي تعد واحدة من أكبر منصات التسوق عبر اإلنترنت اليوم .هناك الكثير
من العمالء الذين يشترون المنتجات من Amazonحتى أن Amazonتكسب اليوميف المتوسط
638.1مليون دوالريف اليوم .لذا ،فإن وجود مثل هذه القاعدة الكبيرة من العمالء ،سيصبح
مشروعًا رائعًا لعلوم البيانات إذا تمكنا من تحليل مشاعر مراجعات منتجات .Amazonلذلك،
في هذه المقالة ،سوف أطلعك على مهمة تحليل آراء مراجعات منتجات Amazonباستخدام
بايثون.
Amazon
تم تنزيل مجموعة البيانات التي أستخدمها لمهمة تحليل آراء مراجعات منتجات Amazonمن
.Kaggleتحتوي مجموعة البيانات هذه على مراجعات المنتجات ألكثر من 568000عميل
اشتروا منتجات من .Amazonفلنبدأ هذه المهمة عن طريق استيراد مكتبات بايثون ومجموعة
البيانات الضرورية:
)"data = pd.read_csv("Reviews.csv
))(print(data.head
214
: دعنا نلقي نظرة على بعض المعلومات المطلوبة من مجموعة البيانات هذه،قبل المضي قدمًا
print(data.describe())
missing ( فهي تحتوي على بعض القيم المفقودة،نظرًا ألن مجموعة البيانات هذه كبيرة جدًا
: لذا دعنا نزيل جميع الصفوف التي تحتوي على القيم المفقودة،)values
data = data.dropna)(
Amazon
)يف مجموعة البيانات هذه على التصنيفات التي منحهاScore column( يحتوي عمود النقاط
لذلك دعونا نلقي نظرة على تفاصيل التصنيف.العمالء للمنتج بناءً على تجربتهم مع المنتج
: Amazon لمعرفة كيف يقوم معظم العمالء بتقييم المنتجات التي يشترونها من
ratings = data["Score"].value_counts()
numbers = ratings.index
quantity = ratings.values
بـAmazon صنف أكثر من نصف األشخاص المنتجات التي اشتروها من،وفقًا للشكل أعاله
سأضيف ثالثة أعمدة أخرى إلى مجموعة البيانات هذه على أنها، اآلن. وهو أمر جيد، نجوم5
) من خالل حساب درجاتNeutral( ) ومحايدةNegative( ) وسلبيةPositive( موجبة
)Text column( ) لمراجعات العمالء المذكورةيف عمود النصsentiment scores(المشاعر
:لمجموعة البيانات
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["Text"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["Text"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["Text"]]
print(data.head())
:دعنا اآلن نرى كيف قام معظم الناس بتقييم المنتجات التي اشتروها من أمازون
x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])
)sentiment_score(x, y, z
لذلك ،يكون معظم األشخاص محايدين عند إرسال تجاربهم مع المنتجات التي اشتروها من
.Amazonاآلن دعنا نرى إجمالي جميع درجات المشاعر :
لذلك يمكننا القول إن معظم المراجعات للمنتجات المتاحة على Amazonإيجابية ،حيث أن
إجمالي درجات المشاعر اإليجابية والمحايدة أعلى بكثير من النتائج السلبية.
إذن هذه هي الطريقة التي يمكننا بها تحليل مشاعر مراجعات المنتجيف .Amazonهناك الكثير
من العمالء الذين يشترون المنتجات من Amazonحتى أن Amazonتكسب اليوميف المتوسط
638.1مليون دوالريف اليوم .لذا ،فإن وجود مثل هذه القاعدة الكبيرة من العمالء ،سيصبح
مشروعًا رائعًا لعلوم البيانات إذا تمكنا من تحليل مشاعر مراجعات منتجات .Amazonآمل أن
تكون قد أحببت هذه المقالة حول تحليل المشاعر لمراجعات Amazonباستخدام بايثون.
217
Hotel 40
Reviews Sentiment Analysis with Python
عندما نبحث عن فنادق لقضاء اإلجازة أو السفر ،نفضل دائمًا فندقًا معروفًا بخدماته .أفضل
طريقة لمعرفة ما إذا كان الفندق مناسبًا لك أم ال هي معرفة ما يقوله الناس عن الفندق الذي أقام
هناك من قبل .من الصعب للغاية اآلن قراءة تجربة كل شخص أبدى رأيهيف خدمات الفندق .هذا
هو المكان الذي تأتي فيه مهمة تحليل المشاعر (.)sentiment analysisيف هذه المقالة ،سوف
أطلعك على مهمة تحليل مشاعر تقييمات الفندق ( Hotel Reviews Sentiment
)Analysisباستخدام بايثون.
يتم جمع مجموعة البيانات التي أستخدمها لمهمة تحليل آراء الفنادق من .Kaggleيحتوي على
بيانات حول 20000تقييم لألشخاص حول خدمات الفنادق التي أقاموا فيها لقضاء عطلة أو
رحلة عمل أو أي نوع من الرحالت .تحتوي مجموعة البيانات هذه على عمودين فقط كمراجعات
( )Reviewsوتقييمات ( )Ratingsللعمالء .لذا فلنبدأ بمهمة تحليل آراء الفنادق باستخدام
بايثون من خالل استيراد مكتبات بايثون ومجموعة البيانات الالزمة:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from nltk.sentiment.vader import SentimentIntensityAnalyzer
)(sentiments = SentimentIntensityAnalyzer
)"data = pd.read_csv("hotel_reviews.csv
))(print(data.head
مجموعة البيانات هذه كبيرة جدًا ولحسن الحظ ال توجد قيم مفقودة ،لذا دون إضاعة أي وقت،
دعنا نلقي نظرة سريعة على توزيع تقييمات العمالء:
)(ratings = data["Rating"].value_counts
numbers = ratings.index
quantity = ratings.values
لذلك وفقًا. نجوم4 نجوم و5 يمكن مالحظة أن معظم النزالء قيموا الخدمات الفندقية بـ
يمكننا القول إن معظم الضيوف راضون عن خدمات الفندق الذي،للتصنيفات المذكورة أعاله
لتحليل وجهة نظر. دعنا اآلن نمضي قدمًا من خالل تحليل مشاعر تقييمات الفنادق.أقاموا فيه
سأضيف ثالثة أعمدة إضافية إلى مجموعة البيانات هذه على أنها إيجابية،تقييمات الفندق
)من خالل حساب درجات المشاعرNeutral( ) ومحايدةNegative( ) وسلبيةPositive(
:) للتقييماتsentiment scores(
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["Review"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["Review"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["Review"]]
print(data.head())
فلنلقِ اآلن نظرة، يبدو أن ضيوف الفندق راضون عن الخدمات،)reviews( وفقًا للتقييمات
:على رأي معظم الناسيف خدمات الفنادق بناءً على مشاعر تقييمهم
x = sum(data["Positive"])
219
)]"y = sum(data["Negative
)]"z = sum(data["Neutral
وبالتالي ،يشعر معظم الناس بالحياد ( )neutralتجاه خدمات الفندق .اآلن دعنا نلقي نظرة
فاحصة على نتائج المشاعر:
وبالتالي ،وفقًا للنتائج المذكورة أعاله ،تم تصنيف أكثر من 12000مراجعة على أنها محايدة،
وتم تصنيف أكثر من 6000مراجعة على أنها إيجابية .لذلك يمكن القول إن الناس سعداء حقًا
بخدمات الفنادق التي أقاموا فيها حيث أن التقييمات السلبية أقل من .1500
هذه هي الطريقة التي يمكنك بها تحليل مشاعر تقييمات الفنادق .أفضل طريقة لمعرفة ما إذا كان
الفندق مناسبًا لك أم ال هي معرفة ما يقوله الناس عن الفندق الذي أقام هناك من قبل .هذا هو
المكان الذي يمكن أن تساعدك فيه مهمة تحليل مشاعر تقييمات الفندق على تحديد ما إذا كان
الفندق مناسبًا لرحلتك أم ال .آمل أن تكون قد أحببت هذه المقالة حول تحليل المشاعر لتقييمات
الفنادق باستخدام بايثون.
220 Google Play
Google Play
يمكن العثور على متجر Google Playعلى جميع الهواتف الذكية واألجهزة اللوحية التي تعمل
بنظام .Androidهذا هو متجر تطبيقات Googleالرسمي لنظام التشغيل .Androidيحتوي
على ماليين التطبيقات مع مراجعاتها حتى نتمكن من استخدام مثل هذا القدر من البيانات ألي
مهمة تتعلق بعلوم البيانات .تحليل آراء العمالء وتعليقاتهم هو ما نقوم بهيف مهمة تحليل المشاعر.
بعد قولي هذا،يف القسم أدناه ،سوف أطلعك على مهمة تحليل المشاعريف متجر Google Play
باستخدام بايثون .يمكن تنزيل مجموعة البيانات التي أستخدمهايف هذه المهمة من هنا.
Google Play
سأبدأ هذه المهمة بقراءة مجموعة البيانات .يتم تنزيل مجموعة البيانات التي أستخدمها هنا من
Kaggleوالتي تم جمعها من متجر .Google Playفلنبدأ هذه المهمة بقراءة مجموعة البيانات:
قبل المضي قدمًا ،دعنا نلقي نظرة على ما إذا كانت مجموعة البيانات هذه تحتوي على أي قيم
مفقودة أم ال:
221
print(data.isnull().sum())
: سأقوم بإنشاء مجموعة بيانات جديدة بإسقاط القيم الخالية،إذاً تحتوي على بعض القيم الفارغة
data = data.dropna)(
print(data.isnull().sum())
سأضيف ثالثة أعمدة جديدةيف، google play اآلن لتحليل المشاعر الخاصة بمراجعات متجر
:مجموعة البيانات من خالل فهم مشاعر كل مراجعة للعميل على أنها إيجابية وسلبية ومحايدة
from nltk.sentiment.vader import SentimentIntensityAnalyzer
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["Translated_Review"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["Translated_Review"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["Translated_Review"]]
print(data.head())
دعنا نلقي نظرة على مشاعر العمالء حول التطبيقات المتاحةيف متجر،واآلن كخطوة أخيرة
:)scatter plot( باستخدام مخطط مبعثرGoogle play
إذن هذه هي الطريقة التي يمكننا بها تحليل مشاعر مراجعات متجر google playتحليل
المشاعر هو تصنيف لمراجعات العميل أو تعليقاته على أنها إيجابية وسلبية ومحايدة .أتمنى أن
تكون قد أحببت هذه المقالة حول مهمة تحليل مشاعر متجر Google playباستخدام بايثون.
223 Amazon Alexa
Amazon Alexa
تم جمع مجموعة البيانات التي أستخدمها لمهمة تحليل المشاعر لمراجعات Amazon Alexa
من .Kaggleيحتوي على بيانات حول التصنيفات بين 1و ، 5وتاريخ المراجعات ،وتعليقات
العمالء حول تجربتهم مع .Alexaلذلك دعونا نستورد مجموعة بيانات ومكتبات بايثون
الضرورية التي نحتاجها لهذه المهمة:
= data
pd.read_csv("https://raw.githubusercontent.com/amankharwal/Web
)'site-data/master/amazon_alexa.tsv", delimiter='\t
))(print(data.head
لنبدأ بإلقاء نظرة على بعض المعلومات الموجودةيف تلك البيانات لمعرفة ما إذا كنا بحاجة إلى
تغييرها أم ال:
))(print(data.describe
))(print(data.isnull().sum
)print(data.columns
224
) على التقييمات التيdataset’s rating column( يحتوي عمود تصنيف مجموعة البيانات
أفضل تقييم5 حيث يمثل الرقم،5 إلى1 بمقياس منAmazon Alexa قدمها مستخدمو
لذلك دعونا نلقي نظرة على توزيع التقييمات التي منحها مستخدمو.يمكن للمستخدم تقديمه
:Amazon Alexa
ratings = data["rating"].value_counts()
numbers = ratings.index
quantity = ratings.values
بمايف ذلك جميعAmazon Alexa يمكننا أن نرى أن معظم العمالء قد صنفوا،من الشكل أعاله
. Amazon Alexa لذا فهذا يعني أن معظم العمالء سعداء بخدمة.5 متغيراتها على أنها
Amazon Alexa
يحتوي عمود المراجعات التي تم.Alexa اآلن دعنا ننتقل إلى مهمة تحليل المشاعر لمراجعات
)يف مجموعة البيانات على جميع المراجعات التيverified_reviews column( التحقق منها
لذلك دعونا نضيف أعمدة جديدة إلى هذه البيانات على أنها.Amazon Alexa قدمها عمالء
) من خالل حسابNeutral( ) ومحايدةNegative( ) وسلبيةPositive( أعمدة إيجابية
:)sentiment scores( درجات المشاعر للمراجعات
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i
in data["verified_reviews"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i
in data["verified_reviews"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i
in data["verified_reviews"]]
print(data.head())
Amazon Alexa دعنا اآلن نلخص درجات المشاعر لكل عمود لفهم ما يعتقده معظم عمالء
:بشأنه
x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])
وبالتالي ،فإن الناتج النهائي الذي نحصل عليه يكون محايدًا .هذا يعني أن معظم المستخدمين
يشعرون بالحياد تجاه خدمات .Amazon Alexaدعنا اآلن نرى مجموع درجات المشاعر لكل
عمود:
لذلك يمكننا أن نرى أن االيجابي والمحايد أعلى من 1000حيث يكون السلبي أقل من .100
وهذا يعني أن معظم عمالء Amazon Alexaراضون عن خدماتها.
هذه هي الطريقة التي يمكننا بها تحليل مشاعر مراجعات Amazon Alexaباستخدام لغة برمجة
بايثون .يوجد حاليًا أكثر من 40مليون مستخدم لـ Alexaحول العالم ،لذا فإن تحليل مشاعر
المستخدمين حول Alexaسيكون مشروعًا جيدًا لعلوم البيانات .أتمنى أن تكون قد أحببت هذه
المقالة حول مهمة تحليل آراء Amazon Alexaباستخدام بايثون.
227 Amazon
Amazon
يتبع نظام التوصياتيف Amazonمبدأ إنشاء توصيات قائمة على المنتج ( product based
)recommendationsمما يعني قياس أوجه التشابه بين منتجين ثم التوصية بالمنتجات األكثر
تشابهًا لكل مس تخدم .لطالما كانت طرق قياس أوجه التشابه بين منتجين محل تركيز رئيسي
للباحثين.
ولكن عندما يتعلق األمر بموقع مثل ،Amazonفإنه يحتاج إلى إضافة المزيد من المعايير
للتوصية بالمنتجات للمستخدمين مثل جودة المنتج .سيكون للمنتج الجيد دائمًا مجموعة جيدة
من المراجعات ح تى نتمكن من استخدام كل من نقاط التشابه ومراجعات المنتج إلنشاء
توصيات.يف القسم أدناه ،سوف أطلعك على كيفية إنشاء نظام توصيات أمازون باستخدام بايثون.
Amazon
سأحاول استخدام عدد أقل من مكتبات بايثون التي يمكنني استخدامها إلنشاء نظام التوصية هذا.
للعمل مع البيانات ،سأستخدم مكتبة Pandasو NumPyفقطيف بايثون .فلنستورد البيانات
ونرى كيفية إنشاء نظام توصيات Amazonباستخدام بايثون:
مجموعة البيانات:
)"data = pd.read_csv("amazon.csv
))(print(data.head
228
لذا دعنا نعطي األسماء األكثر،ال تحتوي مجموعة البيانات التي أستخدمها هنا على أسماء أعمدة
:مالءمة لهذه األعمدة
data.columns = ['user_id', 'product_id','ratings','timestamp']
:مجموعة البيانات هذه كبيرة جدًا لذا سأختار عينة
df = data[:int(len(data) * .1)]
:دعنا اآلن نجهز مجموعة البيانات إلنشاء نظام توصية
counts = df['user_id'].value_counts()
data = df[df['user_id'].isin(counts[counts >= 50].index)]
data.groupby('product_id')['ratings'].mean().sort_values(ascen
ding=False)
final_ratings = data.pivot(index = 'user_id', columns
='product_id', values = 'ratings').fillna(0)
num_of_ratings = np.count_nonzero(final_ratings)
possible_ratings = final_ratings.shape[0] *
final_ratings.shape[1]
density = (num_of_ratings/possible_ratings)
density *= 100
final_ratings_T = final_ratings.transpose()
grouped = data.groupby('product_id').agg({'user_id':
'count'}).reset_index()
grouped.rename(columns = {'user_id': 'score'},inplace=True)
training_data = grouped.sort_values(['score', 'product_id'],
ascending = [0,1])
training_data['Rank'] =
training_data['score'].rank(ascending=0, method='first')
recommendations = training_data.head()
:) تقييمات المنتجscore( سأكتب اآلن دالة بايثون إلنشاء توصيات بناءً على درجة
def recommend(id):
recommend_products = recommendations
recommend_products['user_id'] = id
column = recommend_products.columns.tolist()
column = column[-1:] + column[:-1]
recommend_products = recommend_products[column]
return recommend_products
print(recommend(11))
229 Amazon
هذه هي الطريقة التي يمكننا بها إنشاء نظام التوصية من Amazonباستخدام بايثون .ال تحتوي
مجموعة البيانات هذه على أسماء منتجات بداخلها ،بل تحتوي فقط على معرّف المنتج ،لذا
تصبح نتيجة مراجعات المنتج أهم ميزة لمثل هذه األنواع من مجموعات البيانات .أتمنى أن
تعجبك هذه المقالة حول كيفية إنشاء نظام توصية Amazonباستخدام بايثون.
1. 125 Data Science Projects You Can Try with Python, Aman Kharwal,
https://python.plainenglish.io/85-data-science-projects-
c03c8750599e.