Python Pandas - Birleştirme

Pandalar, kolayca bir araya gelmek için çeşitli olanaklar sağlar Series, DataFrame, ve Panel nesneler.

pd.concat(objs,axis=0,join='outer',join_axes=None,
ignore_index=False)
  • objs - Bu, Series, DataFrame veya Panel nesnelerinin dizisi veya eşlemesidir.

  • axis - {0, 1, ...}, varsayılan 0. Bu, birlikte birleştirilecek eksendir.

  • join- {'iç', 'dış'}, varsayılan 'dış'. Diğer eksen (ler) de indeksler nasıl işlenir. Birleşim için dış ve kavşak için iç.

  • ignore_index- boolean, varsayılan False. True ise, birleştirme eksenindeki dizin değerlerini kullanmayın. Ortaya çıkan eksen 0, ..., n - 1 olarak etiketlenecektir.

  • join_axes- Bu, Dizin nesnelerinin listesidir. İç / dış küme mantığını gerçekleştirmek yerine diğer (n-1) eksenler için kullanılacak özel dizinler.

Nesneleri Birleştirme

concatişlevi, bir eksen boyunca birleştirme işlemlerini gerçekleştirmenin tüm ağır işlerini yapar. Farklı nesneler yaratalım ve birleştirme yapalım.

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two])

Onun output aşağıdaki gibidir -

Marks_scored     Name   subject_id
1             98     Alex         sub1
2             90      Amy         sub2
3             87    Allen         sub4
4             69    Alice         sub6
5             78   Ayoung         sub5
1             89    Billy         sub2
2             80    Brian         sub4
3             79     Bran         sub3
4             97    Bryce         sub6
5             88    Betty         sub5

Belirli anahtarları, parçalanmış DataFrame'in her bir parçasıyla ilişkilendirmek istediğimizi varsayalım. Bunu kullanarak yapabilirizkeys argüman -

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'])

Onun output aşağıdaki gibidir -

x  1  98    Alex    sub1
   2  90    Amy     sub2
   3  87    Allen   sub4
   4  69    Alice   sub6
   5  78    Ayoung  sub5
y  1  89    Billy   sub2
   2  80    Brian   sub4
   3  79    Bran    sub3
   4  97    Bryce   sub6
   5  88    Betty   sub5

Ortaya çıkan dizinin kopyalanması; her indeks tekrarlanır.

Ortaya çıkan nesnenin kendi indekslemesini izlemesi gerekiyorsa, ignore_index -e True.

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'],ignore_index=True)

Onun output aşağıdaki gibidir -

Marks_scored     Name    subject_id
0             98     Alex          sub1
1             90      Amy          sub2
2             87    Allen          sub4
3             69    Alice          sub6
4             78   Ayoung          sub5
5             89    Billy          sub2
6             80    Brian          sub4
7             79     Bran          sub3
8             97    Bryce          sub6
9             88    Betty          sub5

İndeks tamamen değişir ve Anahtarlar da geçersiz kılınır.

İki nesnenin eklenmesi gerekiyorsa axis=1, ardından yeni sütunlar eklenecektir.

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print pd.concat([one,two],axis=1)

Onun output aşağıdaki gibidir -

Marks_scored    Name  subject_id   Marks_scored    Name   subject_id
1           98      Alex      sub1         89         Billy         sub2
2           90       Amy      sub2         80         Brian         sub4
3           87     Allen      sub4         79          Bran         sub3
4           69     Alice      sub6         97         Bryce         sub6
5           78    Ayoung      sub5         88         Betty         sub5

Ek Kullanarak Birleştirme

Concat için kullanışlı bir kısayol, Series ve DataFrame üzerindeki örnek ekleme yöntemleridir. Bu yöntemler aslında concat'tan önce geliyordu. Birlikte bir araya geliyorlaraxis=0yani dizin -

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print one.append(two)

Onun output aşağıdaki gibidir -

Marks_scored    Name  subject_id
1           98      Alex      sub1
2           90       Amy      sub2
3           87     Allen      sub4
4           69     Alice      sub6
5           78    Ayoung      sub5
1           89     Billy      sub2
2           80     Brian      sub4
3           79      Bran      sub3
4           97     Bryce      sub6
5           88     Betty      sub5

append işlevi birden fazla nesneyi de alabilir -

import pandas as pd

one = pd.DataFrame({
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5'],
   'Marks_scored':[98,90,87,69,78]},
   index=[1,2,3,4,5])

two = pd.DataFrame({
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5'],
   'Marks_scored':[89,80,79,97,88]},
   index=[1,2,3,4,5])
print one.append([two,one,two])

Onun output aşağıdaki gibidir -

Marks_scored   Name    subject_id
1           98     Alex          sub1
2           90      Amy          sub2
3           87    Allen          sub4
4           69    Alice          sub6
5           78   Ayoung          sub5
1           89    Billy          sub2
2           80    Brian          sub4
3           79     Bran          sub3
4           97    Bryce          sub6
5           88    Betty          sub5
1           98     Alex          sub1
2           90      Amy          sub2
3           87    Allen          sub4
4           69    Alice          sub6
5           78   Ayoung          sub5
1           89    Billy          sub2
2           80    Brian          sub4
3           79     Bran          sub3
4           97    Bryce          sub6
5           88    Betty          sub5

Zaman serisi

Pandalar, özellikle finans sektöründe Zaman serisi verileriyle çalışma süresi için sağlam bir araç sağlar. Zaman serisi verileriyle çalışırken sıklıkla aşağıdakilerle karşılaşırız:

  • Zaman dizisi oluşturma
  • Zaman serisini farklı frekanslara dönüştürün

Pandalar, yukarıdaki görevleri gerçekleştirmek için nispeten kompakt ve kendi kendine yeten bir araç seti sağlar.

Geçerli Saati Alın

datetime.now() size güncel tarih ve saati verir.

import pandas as pd

print pd.datetime.now()

Onun output aşağıdaki gibidir -

2017-05-11 06:10:13.393147

Bir TimeStamp oluşturun

Zaman damgalı veriler, değerleri zamandaki noktalarla ilişkilendiren en temel zaman serisi verileri türüdür. Pandaların nesneleri için, zaman içindeki noktaları kullanmak anlamına gelir. Bir örnek alalım -

import pandas as pd

print pd.Timestamp('2017-03-01')

Onun output aşağıdaki gibidir -

2017-03-01 00:00:00

Tamsayı veya float çağ zamanlarını dönüştürmek de mümkündür. Bunlar için varsayılan birim nanosaniyedir (çünkü bunlar Zaman Damgalarının nasıl saklandığıdır). Bununla birlikte, genellikle dönemler, belirlenebilen başka bir birimde saklanır. Başka bir örnek alalım

import pandas as pd

print pd.Timestamp(1587687255,unit='s')

Onun output aşağıdaki gibidir -

2020-04-24 00:14:15

Bir Zaman Aralığı Oluşturun

import pandas as pd

print pd.date_range("11:00", "13:30", freq="30min").time

Onun output aşağıdaki gibidir -

[datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0)
datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)]

Zamanın Sıklığını Değiştirin

import pandas as pd

print pd.date_range("11:00", "13:30", freq="H").time

Onun output aşağıdaki gibidir -

[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]

Zaman Damgalarına Dönüştürme

Diziler, dönemler veya bir karışım gibi tarih benzeri nesnelerin Seri veya liste benzeri bir nesnesini dönüştürmek için, to_datetimeişlevi. Geçildiğinde, bu bir Seri (aynı indeksle) döndürürken,list-like bir DatetimeIndex. Aşağıdaki örneğe bir göz atın -

import pandas as pd

print pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None]))

Onun output aşağıdaki gibidir -

0  2009-07-31
1  2010-01-10
2         NaT
dtype: datetime64[ns]

NaT anlamına geliyor Not a Time (NaN'ye eşdeğer)

Başka bir örnek alalım.

import pandas as pd

print pd.to_datetime(['2005/11/23', '2010.12.31', None])

Onun output aşağıdaki gibidir -

DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)