دستکاری رشته ها در Pandas: راهنمای جامع و کاربردی
Pandas به عنوان ابزاری قدرتمند برای تجزیه و تحلیل داده ها، مجموعه ای از ابزارهای کارآمد برای دستکاری رشته ها در ستون های DataFrame ارائه می دهد. این امر به شما امکان می دهد داده های متنی را به طور موثر تمیز، پردازش و آماده کنید تا از آنها در تحلیل ها و بینش های خود استفاده کنید.
۱. روش های اساسی:
Pandas تعدادی روش داخلی برای وظایف متداول دستکاری رشته مانند یافتن، جایگزینی، استخراج و تمیز کردن داده ها ارائه می دهد:
str.upper()
: تمام حروف را در رشته به حروف بزرگ تبدیل می کند.str.lower()
: تمام حروف را در رشته به حروف کوچک تبدیل می کند.str.strip()
: فضای خالی را از ابتدای و انتهای رشته حذف می کند.str.replace()
: یک زیر رشته را با رشته دیگری در سراسر رشته جایگزین می کند.str.split()
: رشته را بر اساس جداکننده های مشخص به لیستی از زیر رشته ها تقسیم می کند.str.join()
: زیر رشته ها را با جداکننده های مشخص به یک رشته جدید پیوند می دهد.
مثال:
import pandas as pd
# مثال: تبدیل همه نام ها به حروف بزرگ و حذف فضای خالی
df["Name"] = df["Name"].str.upper().str.strip()
۲. توابع متنی:
علاوه بر روش های داخلی، Pandas از توابع متنی قدرتمندی از کتابخانه re
(مخفف Regular Expressions) پایتون برای وظایف پیچیده تر پردازش متن مانند یافتن الگوها، استخراج اطلاعات و تطبیق عبارات منظم استفاده می کند.
str.contains()
: بررسی می کند که آیا رشته شامل یک زیر رشته خاص است یا خیر.str.match()
: تطابق رشته را با یک عبارت منظم بررسی می کند.str.extract()
: زیر رشته ها را از رشته با استفاده از یک عبارت منظم استخراج می کند.
مثال:
import pandas as pd
# مثال: استخراج کد پستی از آدرس ها
df["Zip Code"] = df["Address"].str.extract("(\d{5})", expand=False)
۳. کتابخانه های شخص ثالث:
کتابخانه های شخص ثالث قدرتمندی مانند fuzzywuzzy
و textblob
امکانات بیشتری برای وظایف پردازش متن پیچیده مانند تطبیق تقریبی رشته، تجزیه و تحلیل احساسات و طبقه بندی متن را ارائه می دهند.
۴. نکات کلیدی:
- هنگام کار با رشته ها، به تفاوت بین حروف بزرگ و کوچک توجه کنید.
- از عبارات شرطی مانند
if
وelse
برای اعمال دستکاری های رشته به طور مشروط استفاده کنید. - برای وظایف پیچیده تر، از توابع متنی و کتابخانه های شخص ثالث مانند
fuzzywuzzy
وtextblob
استفاده کنید.
موارد اضافی:
- Pandas همچنین روش های مفیدی برای کار با مقادیر فقدان داده مانند
str.fillna()
وstr.isnull()
ارائه می دهد. - می توانید از توابع Pandas مانند
pd.Index.map()
وpd.Series.apply()
برای اعمال دستکاری های رشته به طور منظم به کل DataFrame یا Series استفاده کنید. - درک مفاهیم اساسی عبارات منظم برای استفاده موثر از توابع متنی Pandas ضروری است.
با تسلط بر طیف گسترده ای از ابزارهای دستکاری رشته در Pandas، می توانید به طور موثر داده های متنی خود را برای استخراج اطلاعات ارزشمند و کسب بینش های عملی از آنها آماده کنید.
مثال جامع دستکاری رشته ها در Pandas
در این مثال، به طور جامع به بررسی دستکاری رشته ها در Pandas و نحوه استفاده از ابزارهای مختلف آن برای تمیز کردن، پردازش و آماده سازی داده های متنی برای تجزیه و تحلیل می پردازیم.
فرض کنید مجموعه داده ای از اطلاعات مشتریان را با ستون های زیر دارید:
- Name: نام کامل مشتری
- Email: آدرس ایمیل
- Location: مکان (شامل شهر و کشور)
- Phone Number: شماره تلفن
هدف:
- تمیز کردن و آماده سازی داده های رشته ای برای تجزیه و تحلیل بیشتر.
- انجام وظایفی مانند:
- حذف فضای خالی اضافی
- تبدیل نام ها به حروف بزرگ
- استخراج نام خانوادگی از نام کامل
- استانداردسازی فرمت آدرس ایمیل
- استخراج کد پستی از مکان
- فرمت بندی شماره تلفن ها
مراحل:
۱. کتابخانه های مورد نیاز را وارد کنید:
import pandas as pd
۲. داده ها را از CSV بارگیری کنید:
data = pd.read_csv("customer_data.csv")
۳. داده ها را بررسی کنید:
- اطلاعات اولیه:
print(data.info())
- نمونه داده ها:
print(data.head())
۴. دستکاری رشته ها را انجام دهید:
- حذف فضای خالی اضافی:
# حذف فضای خالی در ابتدای و انتهای رشته ها
data["Name"] = data["Name"].str.strip()
data["Email"] = data["Email"].str.strip()
data["Location"] = data["Location"].str.strip()
data["Phone Number"] = data["Phone Number"].str.strip()
# حذف فضای خالی اضافی بین کلمات
data["Name"] = data["Name"].str.replace(" +", " ", regex=True)
data["Location"] = data["Location"].str.replace(" +", " ", regex=True)
- تبدیل نام ها به حروف بزرگ:
data["Name"] = data["Name"].str.upper()
- استخراج نام خانوادگی از نام کامل:
# فرض بر این است که نام ها به صورت "نام خانوادگی, نام" هستند
data["Last Name"] = data["Name"].str.split(", ").str[۰]
- استانداردسازی فرمت آدرس ایمیل:
# تبدیل همه آدرس های ایمیل به حروف کوچک
data["Email"] = data["Email"].str.lower()
# حذف فضای خالی اضافی در آدرس های ایمیل
data["Email"] = data["Email"].str.replace(" ", "")
# تبدیل نقطه ها به زیر خط در آدرس های ایمیل
data["Email"] = data["Email"].str.replace(".", "_")
- استخراج کد پستی از مکان:
# فرض بر این است که کد پستی در پرانتز در انتهای مکان قرار دارد
data["Zip Code"] = data["Location"].str.extract(r"\(([^\)]+)\)", expand=False)
# حذف پرانتز از کد پستی
data["Zip Code"] = data["Zip Code"].str.replace("(", "")
data["Zip Code"] = data["Zip Code"].str.replace(")", "")
- فرمت بندی شماره تلفن ها:
# فرض بر این است که شماره تلفن ها به صورت "کد کشور - کد منطقه - شماره" هستند
data["Phone Number"] = data["Phone Number"].str.replace(" ", "-")
# اضافه کردن "+" به ابتدای شماره تلفن ها
data["Phone Number"] = "+ " + data["Phone Number"]
۵. نتیجه را بررسی کنید:
- داده های تمیز شده را بررسی کنید:
print(data.head())
- اطلاعات مربوط به انواع داده ها را بررسی کنید:
print(data.dtypes)
نکات:
- از عبارات شرطی مانند
if
وelse
برای اعمال دستکاری های رشته به طور مشروط استفاده کنید. - برای وظایف پیچیده تر، از توابع متنی و کتابخانه های شخص ثالث مانند
fuzzywuzzy
وtextblob
استفاده کنید. - دقت و صحت دستکاری های رشته خود را با دقت بررسی کنید.