مقدمه

به فصل «دانلود داده» خوش آمدید! در این فصل، ما مهارت‌های مصورسازی داده خود را با کار بر روی مجموعه داده‌های بزرگ و واقعی که از منابع آنلاین دانلود شده‌اند، به سطح بالاتری می‌بریم. بسیاری از داده‌های موجود در وب در فرمت‌های خاصی مانند CSV یا JSON ذخیره می‌شوند. یادگیری نحوه پردازش (parse) این فرمت‌ها به ما اجازه می‌دهد تا تقریباً هر مجموعه داده‌ای را استخراج و تحلیل کنیم.

ما با فرمت CSV (Comma-Separated Values) شروع می‌کنیم که یکی از رایج‌ترین فرمت‌ها برای ذخیره داده‌های جدولی است.

ماژول csv در پایتون

فایل‌های CSV داده‌ها را در قالب متن ساده ذخیره می‌کنند و در هر ردیف، مقادیر با استفاده از کاما از هم جدا می‌شوند. خط اول فایل معمولاً شامل هدرها یا نام ستون‌ها است. پایتون یک ماژول داخلی به نام csv دارد که کار با این نوع فایل‌ها را بسیار ساده می‌کند.

خواندن هدرهای فایل

بیایید با یک مثال عملی کار کنیم. فرض کنید یک فایل به نام sitka_weather_2021_simple.csv داریم که حاوی اطلاعات آب و هوایی است. ما می‌خواهیم هدرهای این فایل را بخوانیم.

Copy Icon PYTHON
import csv

filename = 'data/sitka_weather_2021_simple.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)
    print(header_row)

در این کد، ما ابتدا ماژول csv را وارد می‌کنیم. سپس فایل را باز کرده و با استفاده از csv.reader() یک شیء خواننده (reader object) ایجاد می‌کنیم. این شیء به ما اجازه می‌دهد تا روی خطوط فایل پیمایش کنیم.

تابع next() اولین خط از فایل (که هدرها هستند) را خوانده و آن را به صورت یک لیست از رشته‌ها برمی‌گرداند. اجرای این کد، لیست هدرهای فایل را در خروجی چاپ خواهد کرد.

استخراج و پردازش داده‌ها

اکنون که هدرها را خوانده‌ایم، می‌توانیم روی باقی ردیف‌های فایل حلقه زده و داده‌های مورد نظر خود را استخراج کنیم.

Copy Icon PYTHON
# Get high temperatures from this file.
highs = []
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)
    
    for row in reader:
        high = int(row[4])
        highs.append(high)

print(highs)

در این کد، ما یک لیست خالی به نام highs برای ذخیره دماهای بالا ایجاد می‌کنیم. پس از خواندن هدر، ما روی باقی ردیف‌های شیء reader حلقه می‌زنیم.

هر row در این حلقه، یک لیست از رشته‌هاست. ما با استفاده از ایندکس، به ستون پنجم (row[4]) که مربوط به بالاترین دما است، دسترسی پیدا می‌کنیم. از آنجایی که داده‌ها از فایل به صورت رشته خوانده می‌شوند، ما آن را با int() به یک عدد صحیح تبدیل کرده و سپس به لیست highs اضافه می‌کنیم.

مصورسازی داده‌های CSV

حالا که داده‌های دما را استخراج کرده‌ایم، می‌توانیم به راحتی آنها را با Matplotlib مصورسازی کنیم.

Copy Icon PYTHON
import matplotlib.pyplot as plt
# ... (previous code for reading data) ...

# Plot the high temperatures.
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(highs, c='red')

# Format plot.
ax.set_title("Daily High Temperatures, 2021", fontsize=24)
ax.set_xlabel('', fontsize=16)
ax.set_ylabel("Temperature (F)", fontsize=16)
ax.tick_params(axis='both', which='major', labelsize=16)

plt.show()

این کد یک نمودار خطی از دماهای بالا در طول سال تولید می‌کند. ما می‌توانیم با افزودن داده‌های مربوط به تاریخ به محور x و دماهای پایین به نمودار، آن را بسیار غنی‌تر و آموزنده‌تر کنیم.

در این درس، با نحوه کار با یکی از رایج‌ترین فرمت‌های داده، یعنی CSV آشنا شدیم. دیدیم که چگونه می‌توان با استفاده از ماژول csv در پایتون، به راحتی داده‌های جدولی را خوانده، پردازش و در نهایت با کتابخانه‌هایی مانند Matplotlib مصورسازی کرد. این یک مهارت بنیادی برای هر کسی است که با تحلیل داده سروکار دارد. در درس بعدی، به بررسی فرمت GeoJSON خواهیم پرداخت که برای کار با داده‌های جغرافیایی و نقشه‌ها استفاده می‌شود.