
اکنون تماشا کنید که این آموزش دارای یک دوره ویدیویی مرتبط است که توسط تیم واقعی پایتون ایجاد شده است. آن را به همراه آموزش کتبی برای تعمیق درک خود تماشا کنید: ترکیب داده ها در پاندا با Concat () و ادغام ()
سریال و اشیاء DataFrame در پاندا ابزارهای قدرتمندی برای کاوش و تجزیه و تحلیل داده ها هستند. بخشی از قدرت آنها از یک رویکرد چند جانبه برای ترکیب مجموعه داده های جداگانه ناشی می شود. با استفاده از پاندا ، می توانید مجموعه داده های خود را ادغام ، بپیوندید و به هم وصل کنید و به شما امکان می دهد تا با تجزیه و تحلیل آن ، داده های خود را متحد و بهتر درک کنید.
در این آموزش ، شما می آموزید که چگونه و چه موقع داده های خود را در پاندا ترکیب کنید:
اگر تجربه ای با استفاده از DataFrame و اشیاء سری در پاندا دارید و آماده هستید که چگونه آنها را با هم ترکیب کنید ، این آموزش به شما کمک می کند تا دقیقاً همین کار را انجام دهید. اگر احساس زنگ زدگی کمی دارید ، می توانید قبل از ادامه کار ، یک تازه کننده سریع در DataFrames تماشا کنید.
شما می توانید با استفاده از نوت بوک تعاملی Jupyter و پرونده های داده موجود در لینک زیر ، به همراه مثالهای موجود در این آموزش دنبال کنید:
مجموعه نوت بوک و مجموعه داده ها را بارگیری کنید: برای دریافت نوت بوک Jupyter و مجموعه داده های CSV که برای یادگیری در مورد ادغام Pandas () ، . join () و Concat () در این آموزش استفاده خواهید کرد ، اینجا را کلیک کنید.
توجه: تکنیک هایی که در زیر در مورد آنها خواهید آموخت ، به طور کلی برای هر دو DataFrame و Series Object کار می کند. اما برای سادگی و نتیجه گیری ، مثالها از اصطلاح مجموعه داده استفاده می کنند تا به اشیاء مراجعه کنند که می توانند از طریق داده ها یا سری باشند.
اولین تکنیکی که یاد خواهید گرفت ادغام () است. شما می توانید از ادغام () در هر زمان که می خواهید عملکردی شبیه به عملیات پیوستن به یک پایگاه داده استفاده کنید. این انعطاف پذیر ترین سه عملیاتی است که شما یاد خواهید گرفت.
هنگامی که می خواهید اشیاء داده را بر اساس یک یا چند کلید ترکیب کنید ، مشابه آنچه در یک پایگاه داده رابطه ای انجام می دهید ، ادغام () ابزاری است که شما نیاز دارید. به طور خاص ، وقتی می خواهید ردیف هایی را که داده ها را به اشتراک می گذارند ، ادغام () مفیدتر است.
شما می توانید با ادغام () به هر دو و یک و بسیاری از آنها بپردازید. در یک پیوستن به تعداد زیادی ، یکی از مجموعه داده های شما ردیف های زیادی در ستون ادغام خواهد داشت که همان مقادیر را تکرار می کند. به عنوان مثال ، مقادیر می توانند 1 ، 1 ، 3 ، 5 و 5 باشند. در همان زمان ، ستون ادغام در مجموعه داده های دیگر مقادیر مکرر نخواهد داشت. به عنوان نمونه 1 ، 3 و 5 را بگیرید.
همانطور که احتمالاً حدس زده اید ، در پیوستن به بسیاری از افراد ، هر دو ستون ادغام شما دارای مقادیر مکرر هستند. این ادغام ها پیچیده تر هستند و منجر به محصول دکارتی ردیف های پیوسته می شوند.
این بدان معنی است که ، پس از ادغام ، شما هر ترکیبی از ردیف ها را خواهید داشت که همان مقدار را در ستون کلیدی به اشتراک می گذارند. این مورد را در مثالهای زیر مشاهده خواهید کرد.
آنچه باعث می شود ادغام () بسیار انعطاف پذیر باشد ، تعداد گزینه ای برای تعریف رفتار ادغام شما است. در حالی که این لیست می تواند دلهره آور به نظر برسد ، با تمرین ، شما قادر خواهید بود به طور تخصصی مجموعه داده ها را از همه نوع ادغام کنید.
هنگامی که از ادغام () استفاده می کنید ، دو آرگومان لازم را ارائه می دهید:
پس از آن ، می توانید تعدادی از استدلال های اختیاری را ارائه دهید تا نحوه ادغام مجموعه داده های خود را تعریف کنید:
اینها برخی از مهمترین پارامترهایی هستند که برای ادغام () می گذرانند. برای لیست کامل ، به مستندات Pandas مراجعه کنید.
توجه: در این آموزش ، می بینید که نمونه هایی از آن همیشه برای مشخص کردن کدام ستون (های) برای پیوستن به آن استفاده می کنند. این ایمن ترین روش برای ادغام داده های خود است زیرا شما و هرکسی که کد خود را می خوانید دقیقاً می دانید هنگام فراخوانی ادغام () چه چیزی را انتظار دارید. اگر ستون (های) ادغام را با ON مشخص نکنید ، پس از آن Pandas از هر ستون با همان نام کلیدهای ادغام استفاده می کند.
قبل از ورود به جزئیات نحوه استفاده از ادغام () ، ابتدا باید اشکال مختلف پیوست را درک کنید:
توجه: حتی اگر شما در مورد ادغام یاد می گیرید ، می بینید که داخلی ، بیرونی ، چپ و راست نیز به عنوان عملیات پیوست گفته می شود. برای این آموزش می توانید اصطلاحات ادغام را در نظر بگیرید و به معادل آن بپیوندید.
شما در مورد این پیوندهای مختلف با جزئیات در زیر خواهید آموخت ، اما ابتدا به این نمایش بصری از آنها نگاهی بیندازید:

در این تصویر ، دو دایره دو مجموعه داده شما هستند و برچسب ها به کدام قسمت یا قسمت هایی از مجموعه داده هایی که می توانید انتظار داشته باشید نشان دهند. در حالی که این نمودار تمام ظرافت ها را پوشش نمی دهد ، می تواند یک راهنمای مفید برای زبان آموزان بصری باشد.
اگر پیشینه SQL دارید ، ممکن است نام عملکرد ادغام را از Syntax Join تشخیص دهید. به جز درونی ، همه این تکنیک ها انواع پیوندهای بیرونی هستند. با پیوندهای بیرونی ، داده های خود را بر اساس تمام کلیدهای موجود در شی سمت چپ ، شی سمت راست یا هر دو ادغام خواهید کرد. برای کلیدهایی که فقط در یک شی وجود دارند ، ستون های بی نظیر در شیء دیگر با NAN پر می شوند ، که مخفف یک عدد نیست.
همچنین می توانید توضیحی بصری از پیوندهای مختلف در یک زمینه SQL در مورد وحشت کدگذاری مشاهده کنید. حالا نگاهی به پیوندهای مختلف در عمل بیندازید.
بسیاری از آموزش های Pandas برای نشان دادن مفاهیمی که سعی در توضیح آنها دارند ، داده های بسیار ساده ای را ارائه می دهند. این رویکرد می تواند گیج کننده باشد زیرا شما نمی توانید داده ها را با هر چیز مشخص مرتبط کنید. بنابراین ، برای این آموزش ، شما از دو مجموعه داده در دنیای واقعی به عنوان DataFrames برای ادغام استفاده خواهید کرد:
شما می توانید این مجموعه داده ها را کاوش کرده و با استفاده از نوت بوک تعاملی Jupyter و داده های آب و هوا CSV همراه با مثال های زیر دنبال کنید:
مجموعه نوت بوک و مجموعه داده ها را بارگیری کنید: برای دریافت نوت بوک Jupyter و مجموعه داده های CSV که برای یادگیری در مورد ادغام Pandas () ، . join () و Concat () در این آموزش استفاده خواهید کرد ، اینجا را کلیک کنید.
اگر می خواهید یاد بگیرید که چگونه از نوت بوک های Jupyter استفاده کنید ، سپس Notebook Jupyter را بررسی کنید: مقدمه.
این دو مجموعه داده از اداره ملی اقیانوسی و جوی (NOAA) است و از مخزن داده های عمومی NOAA گرفته شده است. ابتدا مجموعه داده ها را در DataFrames جداگانه بارگذاری کنید:
>>> وارد كردن پاندا as pd >>> آب و هوا_تمپ = pd.read_csv("COMOUTY_TEMP. CSV") >>> آب و هوا_پریپ = pd.read_csv("COMOUTY_PRECIP. CSV") در کد فوق ، شما از Pandas 'Read_CSV () استفاده کرده اید تا به راحتی پرونده های CSV منبع خود را در اشیاء DataFrame بارگذاری کنید. سپس می توانید به هدرها و چند ردیف اول داده های بارگیری شده با . head () نگاه کنید:
>>> آب و هوا_تمپ.سر() Station_Name. dly-htdd-base60 dly-htdd-normal 0 GHCND: USC00049099 TWENTYNINE PALMS CA US. 10 15 1 GHCND: USC00049099 TWENTYNINE PALMS CA US. 10 15 2 GHCND: USC00049099 TWENTYNINE PALMS CA US. 10 15 3 GHCND: USC00049099 TWENTYNINE PALMS CA US. 10 15 4 GHCND: USC00049099 TWENTYNINE PALMS CA US. 10 15 >>> آب و هوا_پریپ.سر() ایستگاه . dly-snow-pctall-ge050ti 0 GHCND: USC00049099.-9999 1 GHCND: USC00049099.-9999 2 GHCND: USC00049099.-9999 3 GHCND: USC00049099. 0 4 GHCND: USC00049099. 0 در اینجا ، شما از . head () برای به دست آوردن پنج ردیف اول هر DataFrame استفاده کردید. حتماً این کار را به تنهایی با نوت بوک تعاملی Jupyter یا در کنسول خود امتحان کنید تا بتوانید داده ها را در عمق بیشتری کشف کنید.
بعد ، نگاهی گذرا به ابعاد دو dataframe:
>>> آب و هوا_تمپ.شکل (127020 ، 21) >>> آب و هوا_پریپ.شکل (151110 ، 29) توجه داشته باشید که . shape ویژگی اشیاء DataFrame است که ابعاد DataFrame را به شما می گوید. برای COMORY_TEMP ، خروجی . shape می گوید که DataFrame دارای 127،020 ردیف و 21 ستون است.
در این مثال ، شما از ادغام () با آرگومان های پیش فرض آن استفاده خواهید کرد ، که منجر به پیوستن درونی خواهد شد. به یاد داشته باشید که در یک عضویت داخلی ، ردیف هایی را که در ستون اصلی DataFrame دیگر مطابقت ندارند ، از دست خواهید داد.
با دو مجموعه داده بارگذاری شده در اشیاء DataFrame ، یک قطعه کوچک از مجموعه داده بارش را انتخاب می کنید و سپس از یک تماس ادغام ساده () استفاده می کنید تا یک عضو داخلی را انجام دهید. این منجر به یک مجموعه داده کوچکتر و متمرکز تر خواهد شد:
>>> CALL_ONE_STATION = آب و هوا_پریپ.پرس و جو("ایستگاه == 'GHCND: USC00045721") >>> CALL_ONE_STATION.سر() ایستگاه . dly-snow-pctall-ge050ti 1460 GHCND: USC00045721.-9999 1461 GHCND: USC00045721.-9999 1462 GHCND: USC00045721.-9999 1463 GHCND: USC00045721.-9999 1464 GHCND: USC00045721.-9999 در اینجا شما یک DataFrame جدید به نام BARL_ONE_STATION از COMOUTY_PRECIP DATAFRAME ایجاد کرده اید ، و فقط ردیف هایی را انتخاب می کنید که در آن قسمت ایستگاه "GHCND: USC00045721" است.
اگر ویژگی شکل را بررسی کنید ، خواهید دید که دارای 365 ردیف است. هنگامی که ادغام را انجام می دهید ، فکر می کنید چند ردیف در DataFrame ادغام شده دریافت خواهید کرد؟به یاد داشته باشید که شما یک عضویت داخلی را انجام می دهید:
>>> ier_merged = pd.ادغام(CALL_ONE_STATION, آب و هوا_تمپ) >>> ier_merged.سر() Station_Name. dly-htdd-base60 dly-htdd-normal 0 GHCND: USC00045721 MITCHELL CAVERNS CA US. 14 19 1 GHCND: USC00045721 MITCHELL CAVERNS CA US. 14 19 2 GHCND: USC00045721 MITCHELL CAVERNS CA US. 14 19 3 GHCND: USC00045721 MITCHELL CAVERNS CA US. 14 19 4 GHCND: USC00045721 MITCHELL CAVERNS CA US. 14 19 >>> ier_merged.شکل (365 ، 47) اگر 365 ردیف را حدس زده اید ، پس درست بودید! این امر به این دلیل است که ادغام () به طور پیش فرض برای پیوستن به درونی ، و یک عضویت داخلی فقط آن ردیف هایی را که مطابقت ندارند دور می کند. از آنجا که همه ردیف های شما مسابقه ای داشتند ، هیچ کدام گم نشدند. همچنین باید توجه داشته باشید که اکنون ستون های بیشتری وجود دارد: 47 دقیق.
با ادغام () ، شما همچنین می توانید بر روی کدام ستون (های) برای پیوستن به آن کنترل کنید. بیایید بگوییم که شما می خواهید هر دو مجموعه داده را ادغام کنید ، اما فقط در ایستگاه و تاریخ از آنجا که ترکیب این دو برای هر سطر یک مقدار منحصر به فرد به همراه خواهد داشت. برای انجام این کار ، می توانید از پارامتر ON استفاده کنید:
>>> ier_merged_total = pd.ادغام( . آب و هوا_تمپ, آب و هوا_پریپ, on=["ایستگاه", "تاریخ"] . ) >>> ier_merged_total.شکل (123005 ، 48) می توانید یک ستون کلید واحد را با یک ستون رشته یا چند کلید با یک لیست مشخص کنید. این منجر به یک DataFrame با 123،005 ردیف و 48 ستون می شود.
چرا 48 ستون به جای 47؟از آنجا که ستون های کلیدی را برای پیوستن به آن مشخص کرده اید ، پانداس سعی نمی کند همه ستون های قابل قبول را ادغام کند. این می تواند منجر به نام ستون های "تکراری" شود ، که ممکن است مقادیر متفاوتی نداشته باشد.
"کپی" در علائم نقل قول است زیرا نام ستون یک مسابقه دقیق نخواهد بود. به طور پیش فرض ، آنها با _x و _y ضمیمه می شوند. همچنین می توانید از پارامتر پسوند استفاده کنید تا آنچه را که در نام ستون ها ضمیمه شده است ، کنترل کنید.
برای جلوگیری از شگفتی ، تمام مثالهای زیر از پارامتر ON برای مشخص کردن ستون یا ستون هایی که برای پیوستن به آن استفاده می شود ، استفاده می کنند.
در اینجا ، یک پیوستن بیرونی با پارامتر How را مشخص خواهید کرد. از نمودارهای بالا به یاد داشته باشید که در یک پیوستن بیرونی - که به عنوان یک پیوستن کامل بیرونی نیز شناخته می شود - همه ردیف های هر دو dataframe در DataFrame جدید وجود خواهد داشت.
اگر یک ردیف بر اساس ستون (های) کلید دیگر مطابقت نداشته باشد ، پس از آن با یک عضو داخلی ، ردیف را از دست نخواهید داد. در عوض ، این ردیف در DataFrame ادغام شده قرار خواهد گرفت و مقادیر NAN در صورت لزوم پر می شود.
این به بهترین وجه در یک مثال نشان داده شده است:
>>> بیرونی_ = pd.ادغام( . CALL_ONE_STATION, آب و هوا_تمپ, چگونه="بیرونی", on=["ایستگاه", "تاریخ"] . ) >>> بیرونی_.شکل (127020 ، 48) اگر از زمانی که ویژگی . shape از COMERATH_TEMP را بررسی کرده اید ، به یاد می آورید ، خواهید دید که تعداد ردیف های موجود در Outer_merged یکسان است. با پیوستن بیرونی ، می توانید انتظار داشته باشید که همان تعداد ردیف ها به عنوان DataFrame بزرگتر داشته باشید. به این دلیل است که هیچ ردیف در پیوستن بیرونی از بین نمی رود ، حتی اگر آنها در دیگری DataFrame مطابقت نداشته باشند.
در این مثال ، شما یک پیوستن به چپ - که به عنوان یک پیوستگی بیرونی چپ نیز شناخته می شود - با پارامتر نحوه مشخص می کنید. با استفاده از یک پیوستن بیرونی چپ ، داده های ادغام شده جدید شما را با تمام ردیف ها از سمت چپ Dataframe رها می کند ، در حالی که ردیف ها را از DataFrame سمت راست دور می کنید که در ستون کلیدی DataFrame سمت چپ مطابقت ندارند.
شما می توانید در مورد این به عنوان یک ادغام نیمه توت و نیمه داخلی فکر کنید. مثال زیر این را در عمل نشان می دهد:
>>> چپ چپ = pd.ادغام( . آب و هوا_تمپ, CALL_ONE_STATION, چگونه="ترک کرد", on=["ایستگاه", "تاریخ"] . ) >>> چپ چپ.شکل (127020 ، 48) Left_merged دارای 127،020 ردیف است که با تعداد ردیف های موجود در DataFrame سمت چپ ، COMERA_TEMP مطابقت دارد. برای اثبات این که این تنها برای DataFrame سمت چپ وجود دارد ، همان کد را اجرا کنید ، اما موقعیت CARAB_ONE_STATION و COMEY_TEMP را تغییر دهید:
>>> Left_merged_Reversed = pd.ادغام( . CALL_ONE_STATION, آب و هوا_تمپ, چگونه="ترک کرد", on=["ایستگاه", "تاریخ"] . ) >>> Left_merged_Reversed.شکل (365 ، 48) این منجر به یک DataFrame با 365 ردیف می شود و تعداد ردیف های موجود در BARL_ONE_STATION را شامل می شود.
پیوستن سمت راست ، یا پیوستن بیرونی راست ، نسخه آینه تصویر از سمت چپ است. با این پیوستن ، تمام ردیف ها از DataFrame سمت راست حفظ می شوند ، در حالی که ردیف های موجود در DataFrame سمت چپ بدون مطابقت در ستون کلید DataFrame سمت راست دور ریخته می شوند.
برای نشان دادن چگونگی پیوندهای راست و چپ تصاویر آینه ای از یکدیگر ، در مثال زیر شما DataFrame Left_merged را از بالا بازآفرینی می کنید ، فقط این بار با استفاده از یک پیوستن به سمت راست:
>>> راست_ = pd.ادغام( . CALL_ONE_STATION, آب و هوا_تمپ, چگونه="درست", on=["ایستگاه", "تاریخ"] . ) >>> راست_.شکل (127020 ، 48) در اینجا ، شما به سادگی موقعیت های ورودی DataFrames را می چرخانید و یک پیوستن درست را مشخص کردید. وقتی از راست_مره بازرسی می کنید ، ممکن است متوجه شوید که دقیقاً مشابه Left_merged نیست. تنها تفاوت بین این دو ترتیب ستون ها است: ستون های ورودی اول همیشه اولین مورد در DataFrame تازه شکل گرفته خواهند بود.
ادغام () پیچیده ترین ابزارهای ترکیبی داده Pandas است. این همچنین پایه ای است که ابزارهای دیگر بر روی آن ساخته شده اند. پیچیدگی آن بیشترین قدرت آن است و به شما امکان می دهد مجموعه داده ها را به هر روش ترکیب کنید و بینش جدیدی را در مورد داده های خود ایجاد کنید.
از طرف دیگر ، این پیچیدگی استفاده از ادغام () را بدون درک بصری از تئوری مجموعه و عملیات پایگاه داده دشوار می کند. در این بخش ، شما در مورد تکنیک های مختلف ادغام داده ها ، و همچنین ادغام های بسیاری از یک و بسیاری از آنها ، که در نهایت از نظریه مجموعه ای حاصل می شود ، آموخته اید. برای اطلاعات بیشتر در مورد تئوری مجموعه ، مجموعه های موجود در پایتون را بررسی کنید.
اکنون ، شما به . join () ، نسخه ساده ادغام () نگاه خواهید کرد.
در حالی که ادغام () یک تابع ماژول است ، Join () یک روش نمونه است که در DataFrame شما زندگی می کند. این به شما امکان می دهد فقط یک DataFrame را مشخص کنید ، که به DataFrame که با آنها تماس می گیرید.
در زیر کاپوت ، . join () از ادغام () استفاده می کند ، اما روشی کارآمدتر برای پیوستن به DataFrames از یک تماس ادغام کاملاً مشخص شده فراهم می کند. قبل از غواصی به گزینه های موجود در اختیار شما ، به این مثال کوتاه نگاهی بیندازید:
>>> CALL_ONE_STATION.پیوستن( . آب و هوا_تمپ, LSUFFIX="_ترک کرد", رفیق="_درست" . ).شکل (365 ، 50) با مشاهده شاخص ها ، می توانید یک پیوستن به سمت چپ در اینجا اتفاق بیفتد ، در حالی که CARAP_ONE_STATION DataFrame سمت چپ است. ممکن است توجه داشته باشید که این مثال پارامترهای Lsuffix و Rsuffix را ارائه می دهد. از آنجا که . join () به شاخص ها می پیوندد و به طور مستقیم DataFrames را ادغام نمی کند ، همه ستون ها - حتی آنهایی که دارای نام مطابق هستند - در DataFrame حاصل حفظ می شوند.
اکنون مثال قبلی را در اطراف خود بچرخانید و در عوض تماس بگیرید. JOIN () را در DataFrame بزرگتر:
>>> آب و هوا_تمپ.پیوستن( . CALL_ONE_STATION, LSUFFIX="_ترک کرد", رفیق="_درست" . ).شکل (127020 ، 50) توجه کنید که DataFrame بزرگتر است ، اما داده هایی که در DataFrame کوچکتر ، CARAB_ONE_STATION وجود ندارد ، با مقادیر NAN پر شده است.
به طور پیش فرض ، . join () سعی در انجام پیوستن به چپ در شاخص ها خواهد داشت. اگر می خواهید با ادغام () به ستون هایی مانند خود بپیوندید ، پس باید ستون ها را به عنوان شاخص تنظیم کنید.
مانند ادغام () ، . Join () پارامترهای چند پارامتر دارد که انعطاف پذیری بیشتری در پیوندهای شما به شما می دهد. با این حال ، با . join () ، لیست پارامترها نسبتاً کوتاه است:
در این بخش ، مثالهایی را مشاهده خواهید کرد که چند مورد استفاده متفاوت برای . join () را نشان می دهد. برخی از آنها ساده سازی تماس های ادغام () خواهد بود. برخی دیگر از ویژگی هایی خواهند بود که تنظیم می کنند.
از آنجایی که قبلاً یک تماس کوتاه را مشاهده کرده اید. این به چه چیزی نیاز دارد؟یک ثانیه برای فکر کردن در مورد یک راه حل احتمالی ، و سپس به راه حل پیشنهادی زیر نگاه کنید:
>>> ier_merged_total = pd.ادغام( . آب و هوا_تمپ, آب و هوا_پریپ, on=["ایستگاه", "تاریخ"] . ) >>> ier_merged_total.شکل (123005 ، 48) >>> ier_joined_total = آب و هوا_تمپ.پیوستن( . آب و هوا_پریپ.set_index(["ایستگاه", "تاریخ"]), . on=["ایستگاه", "تاریخ"], . چگونه="درونی", . LSUFFIX="_ایکس", . رفیق="_y", . ) >>> ier_joined_total.شکل (123005 ، 48) از آنجا که . join () روی شاخص ها کار می کند ، اگر می خواهید از قبل Merge () را بازآفرینی کنید ، باید شاخص ها را در ستون های پیوست که مشخص می کنید تنظیم کنید. در این مثال ، شما از . set_index () استفاده کرده اید تا شاخص های خود را روی ستون های کلیدی موجود در آن تنظیم کنید. توجه داشته باشید که . join () به طور پیش فرض پیوستن به سمت چپ را انجام می دهد ، بنابراین شما باید به طور توضیح از نحوه انجام یک عضویت داخلی استفاده کنید.
با این کار ، ارتباط بین ادغام () و . join () باید واضح تر باشد.
در زیر یک تماس . join () مشاهده خواهید کرد که تقریباً لخت است. از آنجا که ستون های همپوشانی وجود دارد ، باید پسوند را با Lsuffix ، Rsuffix یا هر دو مشخص کنید ، اما این مثال رفتار معمولی تر . join () را نشان می دهد:
>>> آب و هوا_تمپ.پیوستن(آب و هوا_پریپ, LSUFFIX="_ترک کرد").شکل (127020 ، 50) این مثال باید یادآور آنچه در مقدمه. Join () قبلاً دیدید. تماس یکسان است و در نتیجه یک پیوستن به چپ که یک DataFrame با همان تعداد ردیف های COMOUTY_TEMP تولید می کند.
در این بخش، با . join() و پارامترها و کاربردهای آن آشنا شدید. شما همچنین در مورد نحوه عملکرد . join() در زیر سرپوش یاد گرفته اید و یک فراخوان merge() با . join() ایجاد کرده اید تا ارتباط بین این دو تکنیک را بهتر درک کنید.
الحاق با تکنیک های ادغام که در بالا دیدید کمی متفاوت است. با ادغام، می توانید انتظار داشته باشید که مجموعه داده حاصل دارای ردیف هایی از مجموعه داده های والد باشد که اغلب بر اساس برخی مشترکات با هم ترکیب شده اند. بسته به نوع ادغام، ممکن است ردیف هایی را نیز از دست بدهید که در مجموعه داده دیگر مطابقت ندارند.
با الحاق، مجموعه داده های شما فقط در امتداد یک محور به هم می چسبند - یا محور ردیف یا محور ستون. از نظر بصری، یک الحاق بدون پارامتر در امتداد سطرها به شکل زیر است:

برای پیاده سازی این در کد، از concat() استفاده می کنید و فهرستی از DataFrames را که می خواهید به هم متصل کنید، به آن ارسال کنید. کد این کار به شکل زیر است:
به هم پیوسته = پاندا.concat([df1, df2]) توجه: این مثال فرض می کند که نام ستون های شما یکسان است. اگر نام ستون های شما هنگام به هم پیوستن در امتداد ردیف ها (محور 0) متفاوت باشد، به طور پیش فرض ستون ها نیز اضافه می شوند و مقادیر NaN در صورت لزوم پر می شوند.
اگر بخواهید به جای آن یک الحاق در امتداد ستون ها انجام دهید چه؟ابتدا نگاهی به نمایش تصویری این عملیات بیندازید:

برای انجام این کار، مانند آنچه در بالا انجام دادید، از یک فراخوانی ()concat استفاده خواهید کرد، اما همچنین باید پارامتر محور را با مقدار 1 یا "columns" ارسال کنید:
به هم پیوسته = پاندا.concat([df1, df2], محور="ستون ها") توجه: این مثال فرض می کند که شاخص های شما بین مجموعه داده ها یکسان است. اگر هنگام به هم پیوستن در امتداد ستون ها (محور 1) متفاوت باشند، به طور پیش فرض شاخص های اضافی (ردیف ها) نیز اضافه می شوند و مقادیر NaN در صورت لزوم پر می شوند.
در بخش زیر در مورد پارامترهای concat() اطلاعات بیشتری کسب خواهید کرد.
همانطور که می بینید، الحاق یک راه ساده تر برای ترکیب مجموعه داده ها است. اغلب برای تشکیل یک مجموعه واحد و بزرگتر برای انجام عملیات اضافی استفاده می شود.
توجه: هنگامی که concat() را فراخوانی می کنید، یک کپی از تمام داده هایی که در حال الحاق هستید ساخته می شود. باید مراقب فراخوانی های متعدد concat() باشید، زیرا کپی های زیادی که ساخته می شوند ممکن است بر عملکرد تأثیر منفی بگذارند. یا می توانید پارامتر کپی اختیاری را روی False تنظیم کنید
وقتی مجموعه داده ها را به هم متصل می کنید، می توانید محوری را که در امتداد آن به هم متصل می شوید، مشخص کنید. اما با محور دیگر چه اتفاقی می افتد؟
هیچ چی. به طور پیش فرض ، یک هماهنگی منجر به یک اتحادیه مشخص می شود ، جایی که تمام داده ها حفظ می شوند. شما این را با ادغام () و . join () به عنوان پیوستن بیرونی دیده اید ، و می توانید این کار را با پارامتر پیوست مشخص کنید.
اگر از این پارامتر استفاده می کنید ، پیش فرض بیرونی است ، اما گزینه داخلی را نیز دارید که یک اتصال داخلی را انجام می دهد یا تقاطع را تنظیم می کند.
مانند سایر پیوندهای درونی که قبلاً دیدید ، برخی از داده های از دست دادن داده می توانند هنگام انجام پیوستن به درونی با Concat () رخ دهند. فقط در جایی که برچسب های محور با هم مطابقت دارند ، ردیف ها یا ستون ها را حفظ می کنید.
توجه: به یاد داشته باشید ، پارامتر پیوست فقط نحوه رسیدگی به محورهایی را که در آن هماهنگ نیستید ، مشخص می کند.
از آنجا که شما در مورد پارامتر پیوست آموخته اید ، در اینجا برخی از پارامترهای دیگر که Concat () می گیرد:
این لیست جامع نیست. می توانید لیست کامل و به روز پارامترهای موجود در مستندات Pandas را پیدا کنید.
اول ، شما با استفاده از DataFrames که در طول این آموزش با آنها بازی کرده اید ، یک توافق اساسی در امتداد محور پیش فرض انجام خواهید داد:
>>> Double_precip = pd.concat([CALL_ONE_STATION, CALL_ONE_STATION]) >>> Double_precip.شکل (730 ، 29) این یکی با طراحی بسیار ساده است. در اینجا ، شما یک DataFrame ایجاد کرده اید که یک دو برابر از یک DataFrame کوچک است که قبلاً ساخته شده است. نکته ای که باید توجه کنید این است که شاخص ها تکرار می شوند. اگر یک شاخص تازه و مبتنی بر 0 می خواهید ، می توانید از پارامتر IGNORE_INDEX استفاده کنید:
>>> مجدداً = pd.concat( . [CALL_ONE_STATION, CALL_ONE_STATION], نادیده گرفتن_هکس=درست است، واقعی . ) >>> مجدداً.فهرست مطالب RangeIndex (شروع = 0 ، توقف = 730 ، مرحله = 1) همانطور که قبلاً ذکر شد ، اگر در امتداد محور 0 (ردیف ها) هماهنگ شوید اما در محور 1 (ستون ها) برچسب هایی داشته باشید که مطابقت ندارند ، آن ستون ها اضافه می شوند و با مقادیر NAN پر می شوند. این منجر به پیوستن بیرونی می شود:
>>> بیرونی = pd.concat([آب و هوا_پریپ, آب و هوا_تمپ]) >>> بیرونی.شکل (278130 ، 47) با استفاده از این دو dataframe ، از آنجا که شما فقط در امتداد ردیف ها هم جمع می شوید ، تعداد بسیار کمی از ستون ها دارای همین نام هستند. این بدان معناست که ستون های زیادی با مقادیر نان مشاهده خواهید کرد.
برای اینکه در عوض ستون هایی را که دارای داده های گمشده هستند ، رها کنید ، از پارامتر Join با مقدار "داخلی" برای انجام یک اتصال داخلی استفاده کنید:
>>> داخلی_ = pd.concat([آب و هوا_تمپ, آب و هوا_پریپ], پیوستن="درونی") >>> داخلی_.شکل (278130 ، 3) با استفاده از Ier Join ، شما فقط با آن ستون هایی که داده های اصلی Dataframes مشترک هستند ، باقی می مانند: ایستگاه ، ایستگاه_ نام و تاریخ.
همچنین می توانید با تنظیم پارامتر محور این کار را تلنگر بزنید:
>>> ier_joined_cols = pd.concat( . [آب و هوا_تمپ, آب و هوا_پریپ], محور="ستون ها", پیوستن="درونی" . ) >>> ier_joined_cols.شکل (127020 ، 50) اکنون شما فقط ردیف هایی دارید که داده ها را برای همه ستون ها در هر دو DataFrames دارند. تصادفی نیست که تعداد ردیف ها با قیمت DataFrame کوچکتر مطابقت داشته باشد.
یکی دیگر از ترفندهای مفید برای هماهنگی استفاده از پارامتر کلیدها برای ایجاد برچسب های محور سلسله مراتبی است. اگر می خواهید شاخص ها یا نام ستون های مجموعه داده های اصلی را حفظ کنید ، این مفید است اما می خواهید موارد جدیدی را اضافه کنید:
>>> سلسله مراتبی_ = pd.concat( . [آب و هوا_تمپ, آب و هوا_پریپ], کلیدی=["دما", "بارش"] . ) >>> سلسله مراتبی_.فهرست مطالب MultiIndex ([("دما ، 0) ، ('دما' ، 1) ، . ("بار" ، 151108) ، ("بار" ، 151109)] ، طول = 278130) اگر در مورد داده های اصلی بررسی کنید ، می توانید تأیید کنید که آیا دما و بارش برچسب محور سطح بالاتر به ردیف های مناسب اضافه شده است.
اکنون سه روش مهم را برای ترکیب داده ها در پاندا آموخته اید:
علاوه بر یادگیری نحوه استفاده از این تکنیک ها ، شما همچنین با آزمایش با روش های مختلف برای پیوستن به مجموعه داده های خود ، در مورد منطق SET آموخته اید. علاوه بر این ، شما در مورد رایج ترین پارامترهای هر یک از تکنیک های فوق آموخته اید ، و چه استدلالی را می توانید برای سفارشی کردن خروجی آنها منتقل کنید.
شما این تکنیک ها را در یک مجموعه داده واقعی به دست آمده از NOAA مشاهده کردید ، که به شما نشان می داد که نه تنها چگونه می توانید داده های خود را ترکیب کنید بلکه مزایای انجام این کار را با تکنیک های داخلی پانداس نیز نشان می دهید. اگر هنوز پرونده های پروژه را بارگیری نکرده اید ، می توانید آنها را از اینجا دریافت کنید:
مجموعه نوت بوک و مجموعه داده ها را بارگیری کنید: برای دریافت نوت بوک Jupyter و مجموعه داده های CSV که برای یادگیری در مورد ادغام Pandas () ، . join () و Concat () در این آموزش استفاده خواهید کرد ، اینجا را کلیک کنید.
آیا چیز جدیدی یاد گرفتید؟با ترکیب مجموعه داده های پیچیده ، یک روش خلاقانه برای حل یک مشکل پیدا می کنید؟در قسمت نظرات پایین ما را آگاه کنید!
علامت گذاری شده
اکنون تماشا کنید که این آموزش دارای یک دوره ویدیویی مرتبط است که توسط تیم واقعی پایتون ایجاد شده است. آن را به همراه آموزش کتبی برای تعمیق درک خود تماشا کنید: ترکیب داده ها در پاندا با Concat () و ادغام ()
هر دو روز یک ترفند کوتاه و شیرین پایتون را به صندوق ورودی خود تحویل دهید. هیچ اسپم هرگزاشتراک هر زمان را لغو کنید. تحت نظارت تیم واقعی پایتون.

درباره کایل استراتیس
کایل یک توسعه دهنده خودآموز است که به عنوان مهندس ارشد داده در آزمایشگاه های Vizit مشغول به کار است. در گذشته ، او DANQEX (سابق Nasdanq: بورس اصلی Meme) و بازی های رمزگذاری شده را تأسیس کرده است.
هر آموزش در Real Python توسط تیمی از توسعه دهندگان ایجاد می شود تا مطابق با استانداردهای با کیفیت بالا ما باشد. اعضای تیم که در این آموزش کار کرده اند عبارتند از:
منصة التداول الأكثر ثقة...
برچسب :
نویسنده : احمد نجفی
بازدید : <-PostHit->