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)