خواندن داده از منابع مختلف
خواندن داده از فایل CSV و JSON با pandas، خواندن از پایگاه داده SQL و API وب؛ ذخیره خروجی در فرمتهای مختلف
داده از کجا میآید؟
اولین قدم هر پروژه علم داده، رساندن داده به پایتون است. دادهها در قالبهای مختلفی زندگی میکنند:
- فایلها: CSV، Excel، JSON، Parquet
- پایگاه داده: MySQL، PostgreSQL، SQLite
- API وب: سرویسهای آبوهوا، ارز، پرداخت
- وباسکرپینگ: استخراج مستقیم از صفحات وب
خواندن فایل CSV
CSV (مقادیر جداشده با کاما) رایجترین فرمت تبادل داده است. هر سطر یک رکورد و مقادیر با کاما جدا میشوند:
name,age,city
سارا,25,تهران
امیر,32,شیراز
خواندن با pandas فقط یک خط است:
import pandas as pd
df = pd.read_csv("customers.csv")
پارامترهای پرکاربرد:
sep=";"← وقتی جداکننده نقطهویرگول است (رایج در فایلهای اروپایی)encoding="utf-8"← برای فارسی حیاتی است!nrows=100← فقط ۱۰۰ سطر اول (برای فایلهای خیلی بزرگ)
خواندن فایل JSON
JSON فرمت استاندارد APIهای وب است؛ داده بهصورت جفت کلید-مقدار:
df = pd.read_json("data.json")
و در پایتون خالص با ماژول داخلی json:
import json
with open("data.json", encoding="utf-8") as f:
data = json.load(f)
خواندن از پایگاه داده SQL
در سازمانها داده عمدتاً در پایگاه داده است. با pandas مستقیم از SQL میخوانیم:
import sqlite3
conn = sqlite3.connect("shop.db")
df = pd.read_sql("SELECT * FROM orders", conn)
نکته مهم: اگر میتوانید فیلتر را در خود SQL انجام دهید (WHERE، GROUP BY)، بهتر است؛ چون پایگاه داده برای این کار بهینهشده است.
خواندن از API وب
بسیاری از سرویسها داده را از طریق API ارائه میدهند. الگوی کلی:
import requests
response = requests.get("https://api.example.com/data")
data = response.json() # تبدیل پاسخ به دیکشنری
df = pd.DataFrame(data["results"])
ذخیره خروجی
پس از پاکسازی، نتیجه را ذخیره میکنیم:
df.to_csv("clean_data.csv", index=False, encoding="utf-8")
df.to_json("clean_data.json", force_ascii=False)
پارامتر index=False جلوی ذخیره اندیس اضافی را میگیرد.
| منبع | ابزار | نکته |
|---|---|---|
| CSV | pd.read_csv | encoding برای فارسی |
| Excel | pd.read_excel | نیازمند نصب openpyxl |
| JSON | pd.read_json | ساختار تودرتو را بررسی کنید |
| SQL | pd.read_sql | فیلتر را در SQL انجام دهید |
| API | requests + json | محدودیت نرخ درخواست را رعایت کنید |
encoding="utf-8" بدهید؛ وگرنه با خطای UnicodeDecodeError یا متن بههمریخته مواجه میشوید.جمعبندی
- pandas با یک خط، CSV/JSON/SQL/Excel را به DataFrame تبدیل میکند
- برای داده فارسی، encoding=utf-8 ضروری است
- در SQL، تا جای ممکن فیلتر را در خود کوئری انجام دهید
- خروجی تمیز را با to_csv/to_json ذخیره کنید
این مبحث بخشی از دوره آموزش کامل علم داده است.