حمیدرضا مازندرانی
حمیدرضا مازندرانی
خواندن ۳ دقیقه·۳ سال پیش

میکرو پروژه روندیابی تولید ناخالص داخلی (GDP) کشور ایران

در این پست قصد داریم با استفاده از اطلاعات وب‌سایت بانک جهانی، روند تغییرات تولید ناخالص داخلی (GDP) کشورمون رو مصورسازی و روندیابی کنیم و به این بهونه یه کم (خیلی کم!) از فضای کار علوم داده در کار با کتابخونه Pandas رو ارائه بدیم به این امید که مخاطبانی که با پایتون آشنا هستن به این فضا علاقه‌مند بشن.

فقط این توضیح رو بدم که طبق اطلاعات ویکی‌پدیا:

«تولید ناخالص داخلی (Gross Domestic Product - GDP) مهم‌ترین متغیری است که در تجزیه و تحلیل‌ها و ارزیابی‌های اقتصاد کلان از آن استفاده می‌شود و در ایران برابر با: کل ارزش ریالی محصولات نهایی تولیدشده توسط واحدهای اقتصادی مقیم کشور در دورهٔ زمانی معین (سالانه یا فصلی) است.»


برای شروع ابتدا باید دیتاست‌های دانلود شده به فرمت csv رو بارگذاری کنیم. در اینجا نخستین چالشی که رخ میده اینه که دیتاست‌های بانک جهانی چند سطر توضیح ابتدایی دارن (شکل زیر). یک راه ساده اینه در فایل دست ببریم و این چند خط توضیح رو پاک کنیم. اما این راهکار اصولی نیست چون قصد ما اینه که تا حد امکان همه چیز به صورت خودکار انجام بشه. برای همین با کمی جستجو متوجه می‌شیم که میشه از آرگومان skiprows استفاده کرد و توضیحات ابتدایی فایل رو کنار گذاشت.

چند سطر توضیح ابتدایی دیتاست (اطلاعات اصلی از ردیف شماره ۵ شروع میشه)
چند سطر توضیح ابتدایی دیتاست (اطلاعات اصلی از ردیف شماره ۵ شروع میشه)


بنابراین با دستور زیر فایل رو در یک دیتافریم Pandas بارگذاری می‌کنیم.

gdp_growth = pd.read_csv('gdp_growth.csv', skiprows=3)


دیتافریم ورودی
دیتافریم ورودی


با مختصری بررسی متوجه می‌شیم فایل بارگذاری شده ایراداتی داره (شکل بالا).

اول این که به وضوح مقادیر ناموجود (NaN) برای خیلی کشورها و سال‌ها دیده میشه. برای حل این مشکل با متد fillna تلاش می‌کنیم همه مقادیر ناموجود رو با مقدار بعدی و اگه وجود نداشت با مقدار قبلی جایگزین کنیم.

مشکل دیگه اینه که مقادیر سال‌های مختلف برای هر کشور در ستون‌های مختلف وجود داره، در حالی که ما تمایل داریم هر سال در یک سطر قرار بگیره. برای حل این مشکل هم از متد transpose استفاده می‌کنیم تا جای سطر و ستون‌ها عوض بشه.

همچنین اطلاعاتی اضافی در دیتافریم وجود داره که ما با استفاده از یک لیست فیلترشون می‌کنیم. اعضای این لیست نام سال‌هایی است (برای مثال 2015 به بعد) که مورد نیاز ماست.

برای حل سه مشکل بالا این چند تا دستور رو خواهیم داشت:

gdp_growth = gdp_growth.fillna(method=&quotffill&quot).fillna(method=&quotbfill&quot) gdp_growth = gdp_growth.transpose() gdp_growth.columns = gdp_growth.iloc[0] filter_list = [str(x) for x in range(2015, 2021)] gdp_growth = gdp_growth.loc[filter_list]


در نهایت دیتافریم به شکل زیر در میاد:

دیتافریم ورودی پس از تغییرات
دیتافریم ورودی پس از تغییرات


اطلاعات کشور عزیزمون ایران به شکل زیر قابل نمایش هست:

نمودار تغییرات GDP ایران از سال 2000 به بعد
نمودار تغییرات GDP ایران از سال 2000 به بعد


حالا با استفاده از یک منحنی برازش خطی که در چند خط کد زیر قابل مشاهده است، روند خطی تغییرات GDP رو مشاهده می‌کنیم که متاسفانه شیب منفی داره یعنی به طور کلی از سال 2000 به بعد هر سال از رشد GDP کاسته شده.

X = np.arange(gdp_growth_iran.shape[0]).reshape(-1, 1) y = gdp_growth_iran.values linear_regressor = LinearRegression() linear_regressor.fit(X, y) Y_pred = linear_regressor.predict(X) gdp_growth_iran.plot() plt.plot(X, Y_pred, color='red')
نمودار تغییرات GDP ایران از سال 2000 به بعد به همراه روند خطی
نمودار تغییرات GDP ایران از سال 2000 به بعد به همراه روند خطی


حالا میایم همین کارهایی که بالا انجام دادیم رو برای شاخص GDP per capita انجام می‌دیم. این شاخص مقدار خام GDP بر حسب دلاره تقسیم بر جمعیت کشور. نتیجه شکل زیر میشه که مشخصاً روند خطی واسش مناسب نیست!

نمودار GDP per capita ایران از سال 2000 به بعد به همراه روند خطی
نمودار GDP per capita ایران از سال 2000 به بعد به همراه روند خطی


حالا با استفاده از کلاس PolynomialFeatures مقادیر ورودی رو به صورت چند جمله‌ای درجه ۲ درمیاریم و سپس همون روند خطی رو اعمال می‌کنیم.

نتیجه شکل ناامیدکننده‌ای است که در ادامه می‌بینید...

نمودار GDP per capita ایران از سال 2000 به بعد به همراه منحنی برازش دوجمله‌ای
نمودار GDP per capita ایران از سال 2000 به بعد به همراه منحنی برازش دوجمله‌ای


در لیست کشورها، یک کشور به نام World دیده میشه که خوشبختانه ما رو از عملیات ریاضی میانگین‌گیری رها میکنه و میشه نتایج رو برای جهان به شکل زیر رسم کرد.

نمودار GDP per capita کل جهان از سال 2000 به بعد به همراه منحنی برازش دوجمله‌ای
نمودار GDP per capita کل جهان از سال 2000 به بعد به همراه منحنی برازش دوجمله‌ای


نمودار بالا نشون میده سفره‌ی اقتصاد جهانی بزرگ شده، هر چند چیزی که در این نمودار دیده نمیشه افزایش شدید نابرابری در سطح جهان هست. به طور کلی باید همیشه یادمون باشه دیتای ما ممکنه خیلی از واقعیت‌ها رو نشون نده!


امیدوارم این میکرو پروژه کوتاه واستون جالب بوده باشه. لطفا من رو در لینکدین دنبال کنید تا در آینده احتمالاً بازم ازین مطالب منتشر کنم. فایل نوت‌بوک هم در پست مرتبط با این مطلب در لینکدین پیوست میشه.







دیتاساینسپایتونعلوم دادهایرانgdp
خالق محتوا، کد و هوشمندی!
شاید از این پست‌ها خوشتان بیاید