یک نکته ساده اما کاربردی ( برنامه نویسی و تحلیل داده در اندروید! )

سلام دوستان .

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

مثلا در مقایسه جاوا و پایتون ، اگر از توسعه دهندگان اندروید بپرسید که با چه زبان برنامه نویسی برای پلتفرم اندروید برنامه یا اپلیکیشن بسازیم خیلی هاشون در جواب می گویند : java ! چرا که زبانی کامپایلری هستش و سرعت بسیار بالایی در مقایسه با زبان های برنامه نویسی تفسیری یا همان اینترپرتری مثل python دارد ولی اگر از توسعه دهندگان دیگری مثل پایتون کاران بپرسید که با کدام زبان برنامه نویسی شروع به کد زدن کنیم؟ ( به فرض اینکه هیچ دانشی از برنامه نویسی ندارید ) اکثرا در جواب شمامی گویند : python ! ولی چرا پایتون چون سینتکس ( نحو ) آن بسیار ساده تر از زبان های برنامه نویسی پیچیده ی دیگری مثل جاوا ، سی پلاس پلاس و یا سی شارپ هست !

البته این تنها دلیل نیست !

این نکته را هم اضافه کنم که صرفا منظور ما برنامه نویسی اندروید نیست وبجز جاوا برای این کار می توانید از سی پلاس پلاس ، سی شارپ ، rust ، کاتلین و حتی html , css و javascript استفاده کنید ! یعنی فقط جاوا یا پایتون ۳ نیست ! پس گزینه های بسیار زیادی پیش روی ما قرار دارد !

خب راستش از بحث اصلی کلی فاصله گرفتیم ! ولی بعد از آشنایی با پایتون فهمیدم یکی از کارهای بزرگی که میشه با این زبان قدرتمند انجام داد داده کاوی یا درواقع پردازش روی داده ها و رسم نمودار های مختلف از آنها برای تحلیل هست ! البته می دانید که بجز پایتون می توان از R , متلب و... هم استفاده کرد ولی پایتون به خاطر داشتن کتابخانه های قدرتمند آن مانند pandas , numpy , matploitlib و...بهترین گزینه است !

خب اگه جز آن دسته از افرادی هستید که مثل من بجای کد نویسی در محیط کامپیوتر با گوشی تلفن همراه و از برنامه هایی مثل pydroid3 و یا termux و یا مثلا qpython3 استفاده می کنید قطعا با مشکلات دیگه ای روبه رو هستید مثلا وقتی از کتابخانه matploitlib برای رسم نمودار استفاده می کنیم وقتی لاین آخر از دستور ()plt.show استفاده می کنیم برنامه اجرا می شود ولی هیچ نموداری توی خروجی به ما نمایش نمی دهد !

پس راهکار چیست ؟

این دستور را باید قبل از لاین اخر به کد مورد نظر اضافه کنیم !

plt.savefig("picturename.png")

بعد از run کردن در محیط ترمینال به محل پروژه رفته و این دستور ls را بزنید :

ls

خواهیم دید که عکسی با همین نام و فرمتی که انتخاب کرده اید در محل مورد نظر ایجاد شده است !


از طریق ترمینال ( ترموکس )
از طریق ترمینال ( ترموکس )


از طریق مدیریت فایل گوشی
از طریق مدیریت فایل گوشی




راهکار دیگه می توانید با فایل منیجر گوشیتون مسقیما به محل پروژه رفته و چک کنید که آیا فایل ایجاد شده است یا خیر !

خب منم با کلی تحقیق و گذراندن وقت خودم توی اینترنت یکسری داده های اکسل با فرمت csv را از پایگاه داده ویروس کرونا به ادرس زیر دانلود کردم و این فایل را به مفسر پایتون معرفی و در آخر با کمک کتابخانه های مورد نظر این خروجی از داده های لحظه ای کرونا گرفته ام که بنظر می رسد مربوط به تقریبا کمتر از ۱۰ ساعت پیش باشد چرا که به طور پیوسته این پایگاه داده هر چند ساعت بروزرسانی می شود !

آدرس پایگاه داده اینجا

پایگاه داده
پایگاه داده
خروجی مورد نظر
خروجی مورد نظر


سورس کد :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 7 10:53:16 2020
@author: arslan
"""
from numpy import array
import matplotlib.pyplot as plt
import csv
def get_data(country):
aggregated_data = []
with open("countries-aggregated.csv", newline="") as csvfile:
datareader = csv.reader(csvfile, delimiter=",", quotechar="|")
for row in datareader:
if row[1] == country and row[2] != "0":
aggregated_data.append(row)
aggregated_data = array(aggregated_data)
return aggregated_data
iran_aggregated_data = get_data("Iran")
plt.figure()
plt.semilogy(iran_aggregated_data[:, 2].astype("float"), label="Total confirmed cases")
plt.semilogy(iran_aggregated_data[:, 3].astype("float"), label="Total number of recoveries")
plt.semilogy(iran_aggregated_data[:, 4].astype("float"), label="Total number of deaths")
plt.xlabel("Days after first case")
plt.ylabel("Cases")
plt.legend()
plt.grid(True)
plt.savefig("picturename.png")
plt.show()

منابع :

یکسری از سایت ها و تجربیات خودم.

امیدوارم مورد پسند شما مخاطبان عزیز ویرگولی قرار بگیرد./: