Python Pandas 튜토리얼: DataFrame, 날짜 범위, Pandas 사용
팬더 란 무엇입니까? Python?
판다 데이터 조작 및 분석을 수행할 수 있는 오픈 소스 라이브러리입니다. Python. 팬더 Python 라이브러리는 수치 테이블과 시계열에 대한 데이터 조작 및 데이터 연산을 제공합니다. Pandas는 데이터를 만들고, 조작하고, 휘두르는 쉬운 방법을 제공합니다. NumPy 위에 구축되어 있으므로 작동하려면 NumPy가 필요합니다.
팬더를 사용하는 이유는 무엇입니까?
데이터 과학자들은 Pandas를 활용합니다. Python 다음과 같은 장점이 있습니다.
- 누락된 데이터를 쉽게 처리
- 그것은 사용 XNUMX차원 데이터 구조용 시리즈 그리고 다차원 데이터 구조를 위한 DataFrame
- 데이터를 분할하는 효율적인 방법을 제공합니다.
- 데이터를 병합, 연결 또는 재구성하는 유연한 방법을 제공합니다.
- 여기에는 작업할 수 있는 강력한 시계열 도구가 포함되어 있습니다.
간단히 말해서 Pandas는 유용한 라이브러리입니다. 데이터 분석. 데이터 조작 및 분석을 수행하는 데 사용할 수 있습니다. Pandas는 강력하고 사용하기 쉬운 데이터 구조와 이러한 구조에서 작업을 빠르게 수행하는 수단을 제공합니다.
팬더를 설치하는 방법?
이제 이것에서 Python Pandas 튜토리얼에서는 Pandas를 설치하는 방법을 배웁니다. Python.
Pandas 라이브러리를 설치하려면 튜토리얼을 참조하세요. 텐서플로우 설치 방법. Pandas는 기본적으로 설치됩니다. 원격의 경우 팬더가 설치되지 않았습니다.
다음을 사용하여 Pandas를 설치할 수 있습니다.
- 아나콘다: conda install -c anaconda pandas
- In Jupyter 공책 :
import sys !conda install --yes --prefix {sys.prefix} pandas
팬더 데이터프레임이란 무엇입니까?
팬더 데이터 프레임 서로 다른 열 유형을 갖는 레이블이 지정된 데이터 구조를 가진 2,3,4차원 배열입니다. DataFrame은 정보를 저장하는 행과 정보의 이름을 지정하는 열로 구성된 표 형식으로 데이터를 저장하는 표준 방법입니다. 예를 들어 가격은 열 이름이 될 수 있고 XNUMX는 가격 값이 될 수 있습니다.
데이터 프레임은 통계학자 및 기타 데이터 실무자에게 잘 알려져 있습니다.
Pandas 데이터 프레임 그림 아래:
시리즈란 무엇입니까?
시리즈는 XNUMX차원 데이터 구조입니다. 정수, 부동 소수점, 문자열과 같은 모든 데이터 구조를 가질 수 있습니다. 계산을 수행하거나 XNUMX차원 배열을 반환하려는 경우에 유용합니다. 정의에 따라 계열은 여러 열을 가질 수 없습니다. 후자의 경우 데이터 프레임 구조를 사용하십시오.
Python Pandas 시리즈에는 다음과 같은 매개변수가 있습니다.
- 데이터: 목록, 사전 또는 스칼라 값일 수 있습니다.
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
index를 사용하여 index를 추가할 수 있습니다. 행 이름을 지정하는 데 도움이 됩니다. 길이는 열의 크기와 같아야 합니다.
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
아래에서는 세 번째 행에 누락된 값이 있는 Pandas 계열을 만듭니다. 참고로 누락된 값은 다음과 같습니다. Python "NaN"으로 표시됩니다. numpy를 사용하여 결측값을 생성할 수 있습니다: np.nan 인위적으로
pd.Series([1,2,np.nan])
산출
0 1.0 1 2.0 2 NaN dtype: float64
Pandas DataFrame 만들기
이제 이 Pandas DataFrame 튜토리얼에서는 다음을 만드는 방법을 배웁니다. Python 팬더 데이터프레임:
pd.Data 프레임()을 사용하여 numpy 배열을 pandas 데이터 프레임으로 변환할 수 있습니다. 그 반대도 가능합니다. 팬더 데이터 프레임을 배열로 변환하려면 np.array()를 사용할 수 있습니다.
## Numpy to pandas import numpy as np h = [[1,2],[3,4]] df_h = pd.DataFrame(h) print('Data Frame:', df_h) ## Pandas to numpy df_h_n = np.array(df_h) print('Numpy array:', df_h_n) Data Frame: 0 1 0 1 2 1 3 4 Numpy array: [[1 2] [3 4]]
사전을 사용하여 Pandas 데이터 프레임을 생성할 수도 있습니다.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]} pd.DataFrame(data=dic)
연령 | 성함 | |
---|---|---|
0 | 30 | 요한 복음 |
1 | 40 | 스미스 |
팬더 범위 데이터
Pandas에는 날짜 범위를 생성하는 편리한 API가 있습니다. 함께 배워보자 Python 팬더 예시:
pd.data_range(날짜, 기간, 빈도):
- 첫 번째 매개변수는 시작 날짜입니다.
- 두 번째 매개변수는 기간 수입니다(종료 날짜가 지정된 경우 선택 사항).
- 마지막 매개변수는 빈도입니다: 일: 'D', 월: 'M', 연도: 'Y.'
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
산출
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months dates_m = pd.date_range('20300101', periods=6, freq='M') print('Month:', dates_m)
산출
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
데이터 검사
아래 Pandas 예제와 같이 Panda의 데이터 프레임 이름 앞에 head() 또는 tail()을 사용하여 데이터 세트의 헤드 또는 테일을 확인할 수 있습니다.
단계 1) 다음을 사용하여 임의의 시퀀스를 만듭니다. numpy. 시퀀스에는 4개의 열과 6개의 행이 있습니다.
random = np.random.randn(6,4)
단계 2) 그런 다음 Pandas를 사용하여 데이터 프레임을 만듭니다.
날짜_m을 데이터 프레임의 인덱스로 사용합니다. 이는 각 행에 날짜에 해당하는 "이름" 또는 색인이 부여된다는 의미입니다.
마지막으로 인수 열을 사용하여 4개 열에 이름을 지정합니다.
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
단계 3) 헤드 기능 사용
df.head(3)
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | 1.139433 | 1.318510 | -0.181334 | 1.615822 |
2030-02-28 | -0.081995 | -0.063582 | 0.857751 | -0.527374 |
2030-03-31 | -0.519179 | 0.080984 | -1.454334 | 1.314947 |
4단계) tail 기능 사용하기
df.tail(3)
A | B | C | D | |
---|---|---|---|---|
2030-04-30 | -0.685448 | -0.011736 | 0.622172 | 0.104993 |
2030-05-31 | -0.935888 | -0.731787 | -0.558729 | 0.768774 |
2030-06-30 | 1.096981 | 0.949180 | -0.196901 | -0.471556 |
5단계) 데이터에 대한 단서를 얻는 훌륭한 방법은 explain()을 사용하는 것입니다. 데이터 세트의 개수, 평균, 표준, 최소, 최대 및 백분위수를 제공합니다.
df.describe()
A | B | C | D | |
---|---|---|---|---|
계산 | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
평균 | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
표준 | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
분 | -0.935888 | -0.731787 | -1.454334 | -0.527374 |
25% | -0.643880 | -0.050621 | -0.468272 | -0.327419 |
50% | -0.300587 | 0.034624 | -0.189118 | 0.436883 |
75% | 0.802237 | 0.732131 | 0.421296 | 1.178404 |
최대 | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
데이터 조각
이 마지막 포인트 Python Pandas 튜토리얼은 Pandas 데이터 프레임을 분할하는 방법에 관한 것입니다.
아래 Pandas 예제와 같이 열 이름을 사용하여 특정 열의 데이터를 추출할 수 있습니다.
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
여러 열을 선택하려면 대괄호 [[..,..]]를 두 번 사용해야 합니다.
첫 번째 대괄호 쌍은 열을 선택한다는 의미이고, 두 번째 대괄호 쌍은 반환하려는 열을 나타냅니다.
df[['A', 'B']].
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
다음을 사용하여 행을 분할할 수 있습니다.
아래 코드는 처음 세 행을 반환합니다.
### using a slice for row df[0:3]
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | -0.168655 | 0.587590 | 0.572301 | -0.031827 |
2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
2030-03-31 | 0.767534 | -0.940617 | 0.227255 | -0.341532 |
loc 함수는 이름으로 열을 선택하는 데 사용됩니다. 평소와 같이 쉼표 앞의 값은 행을 나타내고 뒤의 값은 열을 나타냅니다. 두 개 이상의 열을 선택하려면 대괄호를 사용해야 합니다.
## Multi col df.loc[:,['A','B']]
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
Pandas에서 여러 행과 열을 선택하는 또 다른 방법이 있습니다. iloc[]을 사용할 수 있습니다. 이 방법은 열 이름 대신 인덱스를 사용합니다. 아래 코드는 위와 동일한 데이터 프레임을 반환합니다.
df.iloc[:, :2]
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
열 삭제
pd.drop()을 사용하여 열을 삭제할 수 있습니다.
df.drop(columns=['A', 'C'])
B | D | |
---|---|---|
2030-01-31 | 0.587590 | -0.031827 |
2030-02-28 | 0.998266 | 0.475975 |
2030-03-31 | -0.940617 | -0.341532 |
2030-04-30 | 0.507350 | -0.296035 |
2030-05-31 | 1.276558 | 0.523017 |
2030-06-30 | 1.572085 | -0.594772 |
연쇄
Pandas에서는 두 개의 DataFrame을 연결할 수 있습니다. pd.concat()을 사용할 수 있습니다.
먼저 두 개의 DataFrame을 생성해야 합니다. 지금까지는 훌륭했습니다. 여러분은 이미 데이터프레임 생성에 익숙합니다.
import numpy as np df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'], 'Age': ['25', '30', '50']}, index=[0, 1, 2]) df2 = pd.DataFrame({'name': ['Adam', 'Smith' ], 'Age': ['26', '11']}, index=[3, 4])
마지막으로 두 DataFrame을 연결합니다.
df_concat = pd.concat([df1,df2]) df_concat
연령 | name | |
---|---|---|
0 | 25 | 요한 복음 |
1 | 30 | 스미스 |
2 | 50 | 폴 |
3 | 26 | 아담 |
4 | 11 | 스미스 |
삭제_중복
데이터세트에 중복 정보가 포함될 수 있는 경우 `drop_duplicates`를 사용하면 중복 행을 쉽게 제외할 수 있습니다. `df_concat`에 중복된 관찰이 있고 `name` 열에 `Smith`가 두 번 나타나는 것을 볼 수 있습니다.
df_concat.drop_duplicates('name')
연령 | name | |
---|---|---|
0 | 25 | 요한 복음 |
1 | 30 | 스미스 |
2 | 50 | 폴 |
3 | 26 | 아담 |
값 정렬
sort_values를 사용하여 값을 정렬할 수 있습니다.
df_concat.sort_values('Age')
연령 | name | |
---|---|---|
4 | 11 | 스미스 |
0 | 25 | 요한 복음 |
3 | 26 | 아담 |
1 | 30 | 스미스 |
2 | 50 | 폴 |
이름 바꾸기: 인덱스 변경
Pandas에서 이름 바꾸기를 사용하여 열 이름을 바꿀 수 있습니다. 첫 번째 값은 현재 열 이름이고 두 번째 값은 새 열 이름입니다.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl | 성 | |
---|---|---|
0 | 25 | 요한 복음 |
1 | 30 | 스미스 |
2 | 50 | 폴 |
3 | 26 | 아담 |
4 | 11 | 스미스 |
요약
다음은 Pandas를 사용한 데이터 과학에 가장 유용한 방법을 요약한 것입니다.
데이터 가져 오기 | read_csv |
---|---|
시리즈 만들기 | 연속 |
데이터프레임 생성 | 데이터 프레임 |
기간 생성 | DATE_RANGE |
리턴 헤드 | 머리 |
꼬리를 돌려보내다 | 꼬리 |
설명 | 설명 |
이름을 사용하여 슬라이스 | 데이터 이름['열 이름'] |
행을 사용하여 슬라이스 | 데이터_이름[0:5] |