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