English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas 연결

Pandas 연결의 예제

Pandas는 Series, DataFrame 및 Panel 객체를 쉽게 결합할 수 있는 다양한 기능을 제공합니다.

 pd.concat(objs,axis=0,join='outer',join_axes=None,
 ignore_index=False)

objs − 이는 Series의 시퀀스 또는 매핑, DataFrame 또는 Panel 객체입니다. axis − {0,1,...} 기본값이 0입니다. 연결할 축입니다. join − {'inner', 'outer'} 기본값이 'outer'입니다. 다른 축에 대한 인덱스를 어떻게 처리할지 결정합니다. 외부는 결합, 내부는 교차입니다. ignore_index − 불리언, 기본值为 False. True로 설정하면 연결 축에 인덱스 값을 사용하지 않습니다. 결과 축은 0, ... , n으로 표시됩니다...-1。 join_axes − 이는 인덱스 객체의 목록입니다. 다른 (n-1) 축의 특정 인덱스를 대신 수행하지 않습니다./외부 설정 로직.

연결 객체

이 CONCAT 함수는 모든 축에 걸쳐 연결 작업을 수행하는 역할을 합니다. 다른 객체를 생성하고 연결해 보겠습니다.

 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])))

실행 결과는 다음과 같습니다:

    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

특정 키를 자르는 DataFrame의 각 부분과 연결하고 싶다면 keys 파라미터를 사용할 수 있습니다.-

 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']))

실행 결과는 다음과 같습니다:

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

결과의 인덱스는 중복됩니다; 각 인덱스가 중복됩니다.

결과 객체가 자신의 인덱스를 따를 필요가 있으면 ignore_index를 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))

실행 결과는 다음과 같습니다:

    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

주의할 점은 인덱스가 완전히 변경되었으며, 키도 덮어씌워집니다.

axis=에 따라 연결할 필요가 있으면 1두 개의 객체를 추가하면 새로운 열이 추가됩니다.

 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))

실행 결과는 다음과 같습니다:

    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

append를 사용하여 연결

Concat의 유용한 단축키는 Series와 DataFrame에서의 append 인스턴스 메서드입니다. 이 메서드는 실제로 concat보다 먼저 있습니다. 이 메서드는 축=0을 따라 연결합니다. 즉, 인덱스-

 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))

실행 결과는 다음과 같습니다:

    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

이 추가 기능은 여러 개의 객체를 취할 수 있으며-

 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]))

실행 결과는 다음과 같습니다:

    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

시계열

Pandas는 시계열 데이터를 처리하는 데 강력한 도구를 제공합니다. 특히 금융 분야에서. 시계열 데이터를 처리할 때, 우리는 다음과 같은 경우를 종종 만나게 됩니다:

시간 순서 생성 시계열을 다른 주파수로 변환

위의 작업을 수행하기 위해 상대적으로 단순하고 독립적인 도구를 제공합니다.

현재 시간을 가져옵니다

datetime.now()현재 날짜와 시간을 제공합니다.

 import pandas as pd
 print(pd.datetime.now())

실행 결과는 다음과 같습니다:

2017-05-11 06:10:13.393147

타임스탑 생성

타임스탑 데이터는 값과 시간점을 연결하는 시계열 데이터의 가장 기본적인 형태입니다. 파이썬 오브젝트에서는 타임스탑을 사용합니다. 예시를 들어-

import pandas as pd
print(pd.Timestamp('2017-03-01))

실행 결과는 다음과 같습니다:

2017-03-01 00:00:00

도 수자나 부호점 시간을 변환할 수 있습니다. 기본 단위는 나노초(이는 타임스탑의 저장 방식입니다). 하지만, 일반적으로 원시 시간을 지정할 수 있는 다른 단위로 저장합니다. 또한 예시를 들어

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

실행 결과는 다음과 같습니다:

 2020-04-24 00:14:15

생성 시간 범위

import pandas as pd
print(pd.date_range("11:00", "13:30", freq="3).time)

실행 결과는 다음과 같습니다:

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

시간 주기를 변경

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

실행 결과는 다음과 같습니다:

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

시간 스탬프 변환

일정한 날짜의 객체의 시리즈나 리스트와 같은 객체(예: 문자열, 타임스탬프 또는 혼합)를 변환하려면 to_datetime 함수를 사용할 수 있습니다. 전달 시, 시리즈가 동일한 인덱스를 가진 Series로 반환되고, 리스트와 같은 리스트는 DatetimeIndex로 변환됩니다. 아래의 예제를 참조하세요-

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

실행 결과는 다음과 같습니다:

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

NaT은 시간이 아님을 나타냅니다. (NaN과 동일)

다시 예제를 들어보겠습니다.

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

실행 결과는 다음과 같습니다:

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