آموزش

آموزش ()read_csv در Pandas: وارد کردن داده‌ها

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

تاریخ انتشار:
2 شهریور 1405
پایتون
9 دقیقه
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

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

برای داده‌هایی که فرمت جدولی دارن و به صورت فایل CSV ذخیره شدن، می‌تونی از pandas استفاده کنی و با کمک تابع read_csv() اون‌ها رو در حافظه بخونی. این تابع یه دیتافریم pandas برمی‌گردونه.

در این مقاله، همه چیز رو درباره‌ی تابع read_csv() و نحوه‌ی تغییر پارامترهاش برای شخصی‌سازی خروجی یاد می‌گیری. همچنین نحوه‌ی نوشتن یه دیتافریم pandas در یه فایل CSV رو هم بررسی می‌کنیم.

وارد کردن فایل CSV با استفاده از تابع ()read_csv

قبل از خوندن یه فایل CSV در یه دیتافریم pandas، باید کمی در مورد محتوای داده‌ها اطلاعات داشته باشی. بنابراین پیشنهاد می‌شه قبل از بارگذاری فایل در حافظه، نگاهی گذرا بهش بندازی؛ این کار باعث می‌شه بهتر بفهمی کدوم ستون‌ها مورد نیازه و کدوما رو می‌شه کنار گذاشت.

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

خروجی
   id    name                                host_id  host_name  neighbourhood_group  neighbourhood  latitude  longitude  room_type        price
0  2265  Zen-East in the Heart of Austi...   2466     Paddy      null                 78702          30.27752  -97.71377  Entire home/apt  179
1  5245  Eco friendly, Colorful, Clean, ...  2466     Paddy      null                 78702          30.27614  -97.71320  Private room     114
2  5456  Walk to 6th, Rainey St and Co...    8028     Sylvia     null                 78702          30.26057  -97.73441  Entire home/apt  108
3  5769  NW Austin Room                      8186     Elizabeth  null                 78729          30.45697  -97.78422  Private room     39
4  6413  Gem of a Studio near Downto...      13879    Todd       null                 78704          30.24885  -97.73587  Entire home/apt  109

تنها کاری که در کد بالا انجام دادیم اینه که:

  • کتابخونه‌ی pandas رو در محیطمون وارد کردیم.
  • مسیر فایل رو به read_csv() دادیم تا داده‌ها رو به صورت یه دیتافریم pandas در حافظه بخونه.
  • پنج سطر اول دیتافریم رو چاپ کردیم.

اما تابع read_csv() امکانات خیلی بیشتری داره.

تنظیم یک ستون به عنوان اندیس

رفتار پیش‌فرض pandas اینه که یه اندیس اولیه به دیتافریمی که از فایل CSV در حافظه بارگذاری کرده اضافه می‌کنه. اما می‌تونی با تنظیم پارامتر index_col، به طور دقیق به تابع read_csv() بگی کدوم ستون رو به عنوان اندیس در نظر بگیره.

دقت کن مقداری که به index_col می‌دی می‌تونه نام یه ستون، اندیس یه ستون، یا لیستی از نام‌ها یا اندیس ستون‌ها باشه. اگه یه لیست به این پارامتر بدی، pandas یه اندیس چندسطحی ایجاد می‌کنه؛ یعنی داده‌ها بر اساس چند سطح اندیس‌گذاری می‌شن.

حالا بیا دوباره داده‌ها رو بخونیم و ستون id رو به عنوان اندیس تنظیم کنیم.

خروجی
      name                               host_id  host_name  neighbourhood_group  neighbourhood  latitude  longitude  room_type        price
2265  Zen-East in the Heart of Austi...  2466     Paddy      null                 78702          30.27752  -97.71377  Entire home/apt  179
5245  Eco friendly, Colorful, Clean, ... 2466     Paddy      null                 78702          30.27614  -97.71320  Private room     114
5456  Walk to 6th, Rainey St and Co...   8028     Sylvia     null                 78702          30.26057  -97.73441  Entire home/apt  108
5769  NW Austin Room                     8186     Elizabeth  null                 78729          30.45697  -97.78422  Private room     39
6413  Gem of a Studio near Downto...     13879    Todd       null                 78704          30.24885  -97.73587  Entire home/apt  109

انتخاب ستون‌های خاص برای خوندن در حافظه

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

می‌تونی با پاس دادن یه شیء لیست‌مانند به پارامتر usecols در تابع read_csv()، در زمان و حافظه صرفه‌جویی کنی.

خروجی
       name                                             host_id  neighbourhood  room_type        price  minimum_nights
2265   Zen-East in the Heart of Austin (monthly ren...  2466     78702          Entire home/apt  179    7
5245   Eco friendly, Colorful, Clean, Cozy monthly ...  2466     78702          Private room     114    30
5456   Walk to 6th, Rainey St and Convention Ctr        8028     78702          Entire home/apt  108    2
5769   NW Austin Room                                   8186     78729          Private room     39     1
6413   Gem of a Studio near Downtown                    13879    78704          Entire home/apt  109    3

ما اینجا فقط یه اشاره‌ی کوچیک به روش‌های مختلف سفارشی‌کردن خروجی تابع read_csv() کردیم و توضیح عمیق‌تر ممکنه باعث سردرگمی بشه. برای همین می‌تونی از جدول زیر به عنوان یه منبع استفاده کنی:

پارامترهای رایج ()read_csv

پارامتر توضیحات مثال استفاده
filepath_or_buffer مسیر یا URL فایل CSV برای خوندن. pd.read_csv("data/listings_austin.csv")
sep جداکننده‌ای که باید استفاده بشه. پیش‌فرض , هست. pd.read_csv("data.csv", sep=';')
index_col ستون(هایی) که باید به عنوان اندیس تنظیم بشن. می‌تونه برچسب ستون یا یه عدد باشه. pd.read_csv("data.csv", index_col="id")
usecols برگردوندن بخشی از ستون‌ها. یه لیست از نام‌ها یا اندیس‌های ستون می‌گیره. pd.read_csv("data.csv", usecols=["id", "name", "price"])
names لیست نام‌های ستون برای استفاده. اگه فایل سطر هدر نداشته باشه کاربرد داره. pd.read_csv("data.csv", names=["A", "B", "C"])
header شماره سطر(هایی) که باید به عنوان نام ستون‌ها استفاده بشن. پیش‌فرض 0 (خط اول) هست. pd.read_csv("data.csv", header=1)
dtype نوع داده برای کل داده‌ها یا ستون‌های خاص. pd.read_csv("data.csv", dtype={"id": int, "price": float})
na_values رشته‌های اضافه‌ای که به عنوان NA/NaN شناخته بشن. pd.read_csv("data.csv", na_values=["NA", "N/A"])
parse_dates تلاش برای پردازش تاریخ‌ها. می‌تونه بولین یا لیستی از نام‌های ستون باشه. pd.read_csv("data.csv", parse_dates=["date"])
engine موتور پردازش: 'c' (پیش‌فرض)، 'python' یا 'pyarrow' (سریع‌ترین، نیازمند پکیج pyarrow هست). pd.read_csv("data.csv", engine="pyarrow")
skiprows شماره سطرهایی که باید رد بشن (اندیس از صفر شروع می‌شه) یا تعداد سطرهایی که در شروع باید نادیده گرفته بشن. pd.read_csv("data.csv", skiprows=3)
nrows تعداد سطرهایی که باید خونده بشن. برای پیش‌نمایش فایل‌های بزرگ مفیده. pd.read_csv("data.csv", nrows=100)

 

مدیریت دیتاست‌های بزرگ با chunksize

وقتی با دیتاست‌های بزرگ کار می‌کنی، بارگذاری کل فایل در حافظه به صورت یک‌جا ممکنه عملی نباشه، مخصوصاً در محیط‌هایی که محدودیت حافظه دارن. تابع read_csv() یه پارامتر خیلی کاربردی به اسم chunksize داره که بهت اجازه می‌ده داده‌ها رو در بخش‌های کوچیک‌تر و قابل مدیریت بخونی.

با تنظیم پارامتر chunksize، تابع read_csv() یه شیء قابل پیمایش (iterable) برمی‌گردونه که در هر بار تکرار، بخشی از داده‌ها رو به عنوان یه دیتافریم pandas در اختیارت می‌ذاره. این روش به‌خصوص زمانی که می‌خوای داده‌ها رو به صورت دسته‌ای پردازش کنی یا وقتی اندازه‌ی دیتاست از حافظه‌ی در دسترس بیشتره، خیلی مفیده.

اینجا نحوه‌ی استفاده از پارامتر chunksize رو می‌بینی:

اگه هدفت انجام یه عملیات روی کل دیتاسته، مثلاً محاسبه‌ی جمع کل یه ستون، می‌تونی در حین پیمایشِ بخش‌ها، نتایج رو با هم جمع کنی:

همین‌طور می‌تونی از chunksize برای پردازش و ذخیره‌ی بخش‌های مختلف داده در یه فایل جدید به صورت تدریجی استفاده کنی:

در بخش‌های بعدی بیشتر در مورد متد to_csv() صحبت می‌کنیم.

پارامتر chunksize در این مواقع ضروریه:

  • کار با دیتاست‌هایی که از حافظه‌ی در دسترس بزرگ‌ترن.
  • انجام پاک‌سازی یا تغییر داده‌ها در چند مرحله.
  • تحلیل یا پردازش فایل‌های بزرگ به صورت تدریجی.

خوندن داده‌ها از URL

وقتی یاد بگیری چطور یه فایل CSV رو از سیستم محلی بخونی، خوندن داده از منابع دیگه مثل آب خوردنه. در نهایت فرآیند همونه، فقط با این تفاوت که دیگه مسیر یه فایل رو پاس نمی‌دی.

فرض کن داده‌ای در یه صفحه‌ی وب وجود داره و می‌خوای اون رو بخونی؛ چطور وارد حافظه‌ش می‌کنی؟

ما از دیتاست Iris (گل‌های زنبق) از مخزن UCI به عنوان مثال استفاده می‌کنیم:

خروجی
   sepal_length_in_cm  sepal_width_in_cm  petal_length_in_cm  petal_width_in_cm        class
0                 5.1                3.5                 1.4                0.2  Iris-setosa
1                 4.9                3.0                 1.4                0.2  Iris-setosa
2                 4.7                3.2                 1.3                0.2  Iris-setosa
3                 4.6                3.1                 1.5                0.2  Iris-setosa
4                 5.0                3.6                 1.4                0.2  Iris-setosa

ما لیستی از رشته‌ها رو به پارامتر names پاس دادیم. از اونجا که داده‌های خام Iris سطر هِدر (سطری برای نام ستون‌ها) ندارن، این آرگومان به pandas می‌گه که از لیست ما به عنوان نام ستون‌ها استفاده کنه. (اگه فایل دارای سطر هدر بود، باید از header=0 هم استفاده می‌کردی تا به pandas بگی اون رو جایگزین کنه).

متدها و خصوصیات ساختار دیتافریم

رایج‌ترین شیء در کتابخونه‌ی pandas قطعاً شیء دیتافریمه. این یه ساختار داده‌ی دوبعدی و برچسب‌دار شامل سطرها و ستون‌هاست که می‌تونن انواع داده‌های مختلفی داشته باشن (مثل اعشاری، عددی، دسته‌بندی‌شده و غیره).

از نظر مفهومی، می‌تونی به یه دیتافریم pandas شبیه به یه صفحه‌ی اکسل، یه جدول SQL، یا یه دیکشنری از اشیاء سری نگاه کنی. ویژگی جالب دیتافریم pandas اینه که متدهای زیادی داره که کمک می‌کنه در سریع‌ترین زمان ممکن با داده‌هات آشنا بشی.

تو از قبل یکی از این متدها رو دیدی: iris_data.head() که n سطر اول (پیش‌فرض ۵ تاست) رو نشون می‌ده. متد مخالف head()، متد tail() هست که n سطر آخر (به طور پیش‌فرض ۵ تا) از شیء دیتافریم رو نشون می‌ده. برای مثال:

خروجی
     sepal_length_in_cm  sepal_width_in_cm  petal_length_in_cm  petal_width_in_cm           class
145                 6.7                3.0                 5.2                2.3  Iris-virginica
146                 6.3                2.5                 5.0                1.9  Iris-virginica
147                 6.5                3.0                 5.2                2.0  Iris-virginica
148                 6.2                3.4                 5.4                2.3  Iris-virginica
149                 5.9                3.0                 5.1                1.8  Iris-virginica

می‌تونی با استفاده از خصوصیت columns روی شیء دیتافریمت، خیلی سریع نام ستون‌ها رو پیدا کنی:

خروجی
Index(['sepal_length_in_cm', 'sepal_width_in_cm', 'petal_length_in_cm',
      'petal_width_in_cm', 'class'],
      dtype='object')

یکی دیگه از متدهای مهمی که می‌تونی روی شیء دیتافریم استفاده کنی، info() هست. این متد یه خلاصه‌ی کوتاه از دیتافریم چاپ می‌کنه؛ از جمله اطلاعاتی در مورد اندیس، نوع داده‌ها، ستون‌ها، مقادیر غیر خالی (non-null) و میزان مصرف حافظه.

خروجی
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 5 columns):
#   Column              Non-Null Count  Dtype 
---  ------              --------------  ----- 
0   sepal_length_in_cm  150 non-null    float64
1   sepal_width_in_cm   150 non-null    float64
2   petal_length_in_cm  150 non-null    float64
3   petal_width_in_cm   150 non-null    float64
4   class               150 non-null    object
dtypes: float64(4), object(1)
memory usage: 6.0+ KB

متد DataFrame.describe() آمارهای توصیفی تولید می‌کنه، از جمله اون‌هایی که معیارهای گرایش به مرکز، پراکندگی و شکل توزیع دیتاست رو خلاصه می‌کنن. اگه داده‌هات مقادیر گم‌شده دارن نگران نباش؛ اون‌ها در آمارهای توصیفی لحاظ نمی‌شن.

بیا متد describe() رو روی دیتاست Iris فراخوانی کنیم:

خروجی
       sepal_length_in_cm  sepal_width_in_cm  petal_length_in_cm  petal_width_in_cm
count          150.000000         150.000000          150.000000         150.000000
mean             5.843333           3.054000            3.758667           1.198667
std              0.828066           0.433594            1.764420           0.763161
min              4.300000           2.000000            1.000000           0.100000
25%              5.100000           2.800000            1.600000           0.300000
50%              5.800000           3.000000            4.350000           1.300000
75%              6.400000           3.300000            5.100000           1.800000
max              7.900000           4.400000            6.900000           2.500000

خروجی‌گرفتن از دیتافریم در قالب CSV

یکی دیگه از متدهای موجود برای اشیاء دیتافریم pandas، متد to_csv() هست. وقتی داده‌هات رو پاک‌سازی و پیش‌پردازش کردی، مرحله‌ی بعدی ممکنه این باشه که دیتافریم رو در یه فایل خروجی بگیری، این کار خیلی راحته:

اجرای این کد یه فایل CSV به اسم cleaned_iris_data.csv در پوشه‌ کاری فعلی ایجاد می‌کنه.

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

خب، می‌تونی پارامترهای متد to_csv() رو طوری تنظیم کنی که با نیازهات برای خروجی گرفتن داده‌ها هماهنگ بشن.

بیا چند تا مثال از نحوه‌ی تغییر خروجی to_csv() ببینیم:

  • خروجی گرفتن داده‌ها در پوشه‌ی کاری فعلی ولی با استفاده از تب (tab) به عنوان جداکننده:
  • خروجی گرفتن از داده‌ها بدون اندیس:
  • تغییر نام مقادیر گم‌شده (پیش‌فرض "" هست):
  • خروجی‌گرفتن از دیتافریم به عنوان فایل بدون هدر (نام ستون‌ها):

مدیریت مشکلات کدگذاری

گاهی اوقات ممکنه با خطای کدگذاری مواجه بشی، مخصوصاً اگه در سیستم‌هایی کار می‌کنی که از UTF-8 به عنوان کدگذاری پیش‌فرض استفاده نمی‌کنن یا داده‌هات کاراکترهای غیر ASCII دارن. برای حل این مشکلات، می‌تونی از پارامتر encoding برای تعیین یه کدگذاری مناسب استفاده کنی.

اگه سیستمت از یه کدگذاری دیگه مثل Windows-1252 (که در سیستم‌های ویندوزی رایجه) استفاده می‌کنه، می‌تونی به طور صریح اون رو مشخص کنی:

مثالی با پارامترهای بیشتر:

مثال بالا تضمین می‌کنه که فایل CSV خروجی با سیستم‌ها و برنامه‌های مختلف سازگاره.

پارامترهای رایج ()to_csv

پارامتر توضیحات مثال استفاده
path_or_buf مسیر فایل یا شیء. اگه None باشه، نتیجه به صورت رشته برمی‌گرده. df.to_csv("output.csv")
sep رشته‌ای با طول ۱. جداکننده‌ی فیلدها در فایل خروجی. پیش‌فرض ',' هست. df.to_csv("output.csv", sep=';')
na_rep نحوه‌ی نمایش مقادیر گم‌شده. df.to_csv("output.csv", na_rep='Unknown')
float_format فرمت رشته‌ای برای اعداد اعشاری. df.to_csv("output.csv", float_format='%.2f')
columns ستون‌هایی که باید نوشته بشن. به طور پیش‌فرض همه‌ی ستون‌ها رو می‌نویسه. df.to_csv("output.csv", columns=["id", "name"])
header نوشتن نام ستون‌ها. اگه لیستی از رشته‌ها داده بشه، به عنوان نام‌های جایگزین برای ستون‌ها در نظر گرفته می‌شه. df.to_csv("output.csv", header=False)
index نوشتن نام سطرها (اندیس). پیش‌فرض True هست. df.to_csv("output.csv", index=False)
mode حالت نوشتن پایتون. پیش‌فرض 'w' هست. df.to_csv("output.csv", mode='a')
encoding یه رشته که نشون‌دهنده‌ی کدگذاری مورد استفاده در فایل خروجیه. df.to_csv("output.csv", encoding='utf-8')

 

کتابخونه‌های جایگزین برای کار با CSV در پایتون

با این‌که pandas یه کتابخونه‌ی قدرتمند و همه‌کاره برای کار با فایل‌های CSV هست، اما تنها گزینه‌ی موجود در پایتون نیست. بسته به هدفت، ممکنه کتابخونه‌های دیگه برای انجام کارهای خاص بهتر باشن:

ماژول csv

ماژول csv بخشی از کتابخونه‌ی استاندارد پایتونه و یه جایگزین سبک برای کار با فایل‌های CSV به حساب میاد. این ماژول قابلیت‌های پایه برای خوندن و نوشتن فایل‌های CSV رو بدون نیاز به نصب پکیج‌های اضافی فراهم می‌کنه. مزایای csv عبارتن از:

  • بدون هیچ وابستگی خارجی.
  • سبک و راحت برای کارهای ساده با CSV.
  • کنترل دقیق روی عملیات خوندن و نوشتن.

مثال:

کتابخونه NumPy

کتابخونه‌ی numpy برای محاسبات عددی در پایتون طراحی شده که از پردازش فایل‌های CSV هم پشتیبانی می‌کنه. این ابزار وقتی با داده‌های عددی کار می‌کنی یا عملکرد و سرعت برات مهمه، خیلی به دردت می‌خوره. مزایای این کتابخونه عبارتن از: 

  • عملکرد بالا برای داده‌های عددی.
  • ادغام با فرآیندهای کاری مبتنی بر آرایه‌ها.
  • مدیریت کردن بهینه‌ی دیتاست‌های بزرگ.

مثال:

با اینکه numpy خیلی کارآمده، اما قابلیت‌های قدرتمند تحلیل و ویرایش داده‌ها که در pandas وجود داره رو نداره.

کتابخونه Polars

اگه داری با دیتاست‌های خیلی بزرگی کار می‌کنی که pandas در پردازش‌شون کنده یا حافظه کم میاره، polars یه جایگزین مدرنه که باید بشناسیش. این یه کتابخونه‌ی دیتافریمه که به زبان Rust نوشته شده و برای سرعت فوق‌العاده بالا و پردازش موازی طراحی شده.

همون‌طور که درآموزش polars بررسی کردیم، مزایای اون شامل این موارد می‌شه:

  • سرعت: این کتابخونه از multi-thread استفاده می‌کنه، یعنی از تمام هسته‌های CPU بهره می‌بره تا خوندن و نوشتن داده‌ها رو به مراتب سریع‌تر از pandas انجام بده.
  • مصرف بهینه‌ی حافظه: مدیریت حافظه رو خیلی بهتر انجام می‌ده و اغلب بهت اجازه می‌ده با دیتاست‌های بزرگ‌تری روی همون سیستم کار کنی.
  • ارزیابی تنبل (Lazy Evaluation): می‌تونه کوئری‌ها رو قبل از اجرا بهینه‌سازی کنه و زمان لازم برای عملیات‌های پیچیده رو کاهش بده.

مثال: سینتکس اون معمولاً خیلی شبیه به pandas هست و همین باعث می‌شه یادگیریش راحت باشه:

حرف آخر

بیا چیزهایی که در این آموزش گفتیم رو مرور کنیم؛ تو یاد گرفتی چطور:

  • یه فایل CSV رو با استفاده از تابع read_csv() از کتابخونه‌ی pandas وارد کنی.
  • یه اندیس ستون رو موقع بارگذاری داده‌ها تنظیم کنی.
  • ستون‌های خاصی رو که می‌خوای تابع read_csv() برگردونه مشخص کنی.
  • داده‌ها رو با کمک تابع pandas.read_csv() از یه URL بخونی.
  • خیلی سریع با استفاده از متدها و خصوصیات شیء دیتافریم اطلاعات مفیدی در مورد داده‌هات به دست بیاری.
  • یه شیء دیتافریم رو به عنوان یه فایل CSV خروجی بگیری.
  • فایل خروجی رو با متد to_csv() شخصی‌سازی کنی.

در این آموزش، ما فقط روی وارد کردن و خروجی گرفتن داده‌ها از طریق فایل‌های CSV تمرکز کردیم؛ حالا دیگه درک خوبی داری که pandas چقدر می‌تونه موقع کار با فایل‌های CSV مفید باشه. فرمت CSV یکی از رایج‌ترین فرمت‌های ذخیره‌ی داده‌ست، اما تنها گزینه نیست. فرمت‌های مختلف دیگه‌ای در علم داده استفاده می‌شن، مثل فرمت‌های parquet، JSON و Excel.

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

همچنین آموزش‌هایی در مورد نحوه‌ی وارد کردن داده‌های JSON و HTML به Pandas و یه راهنمای جامع و ساده برای یادگیری pandas وجود داره. حتماً بهشون سر بزن تا بیشتر با کتابخونه‌ی pandas آشنا بشی.

اشتراک‌گذاری
فهرست مطالب
  • وارد کردن فایل CSV با استفاده از تابع ()read_csv
  • مدیریت دیتاست‌های بزرگ با chunksize
  • خوندن داده‌ها از URL
  • متدها و خصوصیات ساختار دیتافریم
  • خروجی‌گرفتن از دیتافریم در قالب CSV
  • کتابخونه‌های جایگزین برای کار با CSV در پایتون
  • حرف آخر

سوالات متداول

بله، pandas می‌تونه فایل‌های CSV رو با جداکننده‌های مختلف بخونه. برای این کار می‌تونی از پارامتر sep در تابع read_csv() استفاده کنی. مثلاً برای فایل‌هایی که با نقطه‌ویرگول جدا شدن، می‌تونی بنویسی:

 pd.read_csv('file.csv', sep=';')

می‌تونی از پارامتر na_values در تابع read_csv() استفاده کنی تا مشخص کنی چه رشته‌های دیگه‌ای باید به عنوان NA/NaN شناخته بشن. مثلاً:

pd.read_csv('file.csv', na_values=['NA', 'missing'])

برای فایل‌های CSV بزرگ، می‌تونی از پارامتر chunksize استفاده کنی تا فایل رو در بخش‌های کوچیک‌تر بخونی. این کار داده‌ها رو قسمت به قسمت می‌خونه و از نظر مصرف حافظه خیلی بهینه‌تره. مثلاً:

pd.read_csv('file.csv', chunksize=1000)

بله، با استفاده از پارامتر skiprows در تابع read_csv() می‌تونی بعضی سطرها رو نادیده بگیری. می‌تونی مشخص کنی دقیقاً چند تا سطر رد بشن، یا این‌که یه لیست از اندیسِ اون سطرها بهش بدی.

می‌تونی از پارامتر dtype برای تعیین نوع داده‌ی ستون‌ها استفاده کنی. مثلاً:

pd.read_csv('file.csv', dtype={'column_name': 'int32'})

بله، با استفاده از پارامتر parse_dates می‌تونی تاریخ‌ها رو پردازش کنی. کافیه مشخص کنی کدوم ستون‌ها باید به عنوان تاریخ در نظر گرفته بشن، مثلاً:

pd.read_csv('file.csv', parse_dates=['date_column'])

از پارامتر comment استفاده کن تا کاراکتری که شروع یه کامنت رو نشون می‌ده، مشخص کنی. این‌جوری سطرهایی که با این کاراکتر شروع می‌شن نادیده گرفته می‌شن. مثلاً:

 pd.read_csv('file.csv', comment='#')

از پارامتر header استفاده کن تا مشخص کنی کدوم سطر باید به عنوان نام ستون‌ها در نظر گرفته بشه. اگه چند سطر هدر وجود داره، می‌تونی از پارامتر names هم برای تعیین نام‌های جدید برای ستون‌ها استفاده کنی.

اگه ساختار فایل پیچیده‌ست، ممکنه لازم باشه فایل رو پیش‌پردازش کنی یا از کتابخونه‌های دیگه‌ای برای استخراج اون جدول خاص کمک بگیری. خود pandas به تنهایی ممکنه نتونه فایل‌های CSV پیچیده و چندجدولی رو مستقیماً مدیریت کنه.

از پارامتر encoding استفاده کن تا کدگذاری فایل رو مشخص کنی. مثلاً:

pd.read_csv('file.csv', encoding='utf-8')

اگه باز هم به خطای کدگذاری برخوردی، می‌تونی از این کد استفاده کنی:

pd.read_csv('file.csv', encoding='latin1')

دریافت اپلیکیشن فینکا

با اپلیکیشن فینکا، به بیشتر دوره‌ها و مسیرها روی موبایل دسترسی دارید، تمرین می‌کنید و یادگیری رو هم‌زمان روی موبایل و دسکتاپ ادامه می‌دید.