logo

Kaip sujungti du duomenų rėmus Python – Pandas?

Daugeliu realių situacijų duomenys, kuriuos norime naudoti, pateikiami keliuose failuose. Dažnai turime sujungti šiuos failus į vieną DataFrame, kad galėtume analizuoti duomenis. Pandos suteikia tokias priemones, leidžiančias lengvai sujungti Series arba DataFrame su įvairių tipų rinkinių logika indeksams ir reliacinės algebros funkcionalumu, kai atliekamos sujungimo / sujungimo tipo operacijos. Taip pat galime sujungti duomenis iš kelių lentelių Pandos . Be to, pandos taip pat teikia paslaugų, leidžiančių palyginti dvi serijas arba „DataFrame“ ir apibendrinti jų skirtumus.

„Panda“ duomenų rėmelių sujungimas

„Pandas“ funkcija concat() naudojama pridėti stulpelius arba eilutes iš vieno „DataFrame“ į kitą. The Pandos concat() funkcija atlieka visus sunkius sujungimo veiksmus išilgai ašies, o kitose ašyse atlieka pasirenkamą indeksų (jei yra) rinkinio logiką (sąjungą arba sankirtą).



Python3








import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> frames>=> [df1, df2]> result>=> pd.concat(frames)> display(result)>

>

>

Išvestis:

    id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

Prisijungimas prie „DataFrames“ programoje „Panda“.

Kai sujungėme duomenų rėmelius, juos tiesiog sudėjome vienas prie kito, t. y. sudėjome juos vertikaliai arba vienas šalia kito. Kitas būdas sujungti DataFrames – kiekviename duomenų rinkinyje naudoti stulpelius, kuriuose yra bendrų verčių (bendras unikalus ID). DataFrames sujungimas naudojant bendrą lauką vadinamas sujungimu. Stulpeliai, kuriuose yra bendros reikšmės, vadinami prisijungimo raktu (-ais). „DataFrame“ sujungimas tokiu būdu dažnai yra naudingas, kai vienas „DataFrame“ yra paieškos lentelė, kurioje yra papildomų duomenų, kuriuos norime įtraukti į kitą.

Pastaba: Šis lentelių sujungimo procesas yra panašus į tai, ką darome su lentelėmis an SQL duomenų bazė .

Kai klijuojate kelis duomenų rėmelius, galite pasirinkti, kaip tvarkyti kitas ašis (išskyrus tą, kuri sujungiama). Tai galima padaryti šiais dviem būdais:

  • Paimkite jų visų sąjungą, prisijunkite = „outer“. Tai yra numatytoji parinktis, nes ji nepraranda jokios informacijos.
  • Paimkite sankryžą, prisijunkite = 'inner'.

Pavyzdys: vidinis dviejų duomenų rėmelių sujungimas naudojant concat() metodą

Šiame pavyzdyje du pandų duomenų rėmeliai,df1>irdf3>, yra sujungti naudojant vidinį sujungimą pagal jų indeksus. Gautas duomenų rėmelis, pavadintas „rezultatu“, apima tik eilutes, kuriose yra „id“ stulpelisdf1>atitinka stulpelį „Miestas“.df3>.

Python3


nginx



import> pandas as pd> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # the default behaviour is join='outer'> # inner join> result>=> pd.concat([df1, df3], axis>=>1>, join>=>'inner'>)> display(result)>

>

>

Išvestis:

  id Name City Age  0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12>

Sujungimas naudojant append() funkciją

Naudingas concat() spartusis klavišas yra append() egzemplioriaus metodas Series ir DataFrame. Šis metodas gali būti naudojamas norint sujungti duomenis iš kelių Pandas lentelių. Šie metodai iš tikrųjų buvo ankstesni nei koncat.

1 pavyzdys: dviejų duomenų rėmelių sujungimas naudojant append() metodą

Šiame pavyzdyje du Pandas DataFrame,df1>irdf2>, derinami naudojantappend>metodą, todėl gaunamas naujas DataFrame, pavadintas „rezultatas“. Gautame DataFrame yra visos eilutės iš abiejųdf1>irdf2>, su nuolatiniu indeksu.

java sinchronizuoti

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> # append method> result>=> df1.append(df2)> display(result)>

>

>

Išvestis:

   id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

Pastaba: append() gali prireikti kelių objektų sujungimui.

2 pavyzdys: Sujunkite duomenis iš kelių Pandas lentelių

Šiame pavyzdyje trys Pandos duomenų rėmeliai,df1>,df2>, irdf3>, pridedami kartu naudojantappend>metodas. Gautas duomenų rėmelis, pavadintas „rezultatas“, sujungia visas eilutes iš trijų duomenų rėmelių, išlaikydamas nuolatinį indeksą.

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # appending multiple DataFrame> result>=> df1.append([df2, df3])> display(result)>

>

>

Išvestis:

   id Name City Age  0 A01 ABC NaN NaN 1 A02 PQR NaN NaN 2 A03 DEF NaN NaN 3 A04 GHI NaN NaN 0 B05 XYZ NaN NaN 1 B06 TUV NaN NaN 2 B07 MNO NaN NaN 3 B08 JKL NaN NaN 0 NaN NaN MUMBAI 12 1 NaN NaN PUNE 13 2 NaN NaN MUMBAI 14 3 NaN NaN DELHI 12>