Python Pandas 튜토리얼: DataFrame, 날짜 범위 및 사용법

⚡ 스마트 요약

Pandas는 오픈 소스입니다. Python 테이블 형식 데이터를 조작하기 위한 라이브러리입니다. 이 라이브러리는 Series 및 DataFrame 구조, 날짜 범위, 검사 도우미, 그리고 이 튜토리얼에서 보여주는 것처럼 데이터 자르기, 삭제, 연결, 정렬 및 이름 변경 작업을 제공합니다.

  • 🔘 NumPy 기반으로 구축: Pandas는 NumPy를 필요로 하는데, NumPy는 모든 Series와 DataFrame의 기반이 되는 배열을 제공합니다.
  • ☑️ 두 가지 구조: 시리즈는 레이블이 지정된 하나의 차원을 저장하고, 데이터프레임은 다양한 유형의 행과 열을 저장합니다.
  • 날짜 범위: pd.date_range()는 시작 날짜, 기간 수 및 빈도를 사용하여 인덱스를 생성합니다.
  • 🧪 먼저 점검하세요: head(), tail() 및 describe() 함수는 분석을 시작하기 전에 모양, 분포 및 백분위수를 보여줍니다.
  • 🛠️ 정확하게 자르세요: Bracket names는 열을 선택하고, loc는 레이블로 선택하며, iloc는 위치로 선택합니다.
  • ⚠️ 버전 참고: 빈도수 별칭 M은 Pandas 2.2부터 더 이상 사용되지 않으며, 최신 버전에서는 ME를 사용해야 합니다.

Python Pandas 튜토리얼: DataFrame, 날짜 범위 및 Pandas 활용법

판다는 무엇에 있나요? Python?

판다 는 데이터 조작 및 분석을 수행할 수 있게 해주는 오픈 소스 라이브러리입니다. Python수치 테이블과 시계열 데이터를 모두 다룹니다. 데이터를 쉽게 생성, 조작 및 관리할 수 있는 방법을 제공하며, 특정 기반 위에 구축되었습니다. 눔 파이따라서 Pandas가 작동하려면 NumPy가 있어야 합니다.

팬더를 사용하는 이유는 무엇입니까?

데이터 과학자들은 Pandas를 활용합니다. Python 다음과 같은 이점이 있습니다.

  • 누락된 데이터를 쉽게 처리
  • 이 코드는 1차원 데이터에는 Series를, 다차원 데이터에는 DataFrame을 사용합니다.
  • 데이터를 분할하는 효율적인 방법을 제공합니다.
  • 데이터를 병합, 연결 또는 재구성하는 유연한 방법을 제공합니다.
  • 여기에는 강력한 시계열 분석 도구 키트가 포함되어 있습니다.

요약하자면, Pandas는 강력하고 사용하기 쉬운 데이터 구조와 이를 빠르게 처리할 수 있는 방법을 제공하기 때문에 대부분의 프레임워크에서 핵심적인 역할을 합니다. Python 데이터 분석 작업.

판다 설치 방법

Pandas는 Anaconda와 대부분의 관리형 노트북 서비스에 포함되어 있으므로 일반적으로 이미 설치되어 있습니다. 가져오기가 실패하면 아래 명령 중 하나를 사용하여 Pandas를 추가하세요. 구축된 환경은 다음과 같습니다. 텐서플로우 설치 방법 팬더도 포함되어 있습니다.

  • 씨: pip install pandas
  • 아나콘다: conda install -c anaconda pandas
  • 내부 Jupyter 수첩 셀:
import sys
!conda install --yes --prefix {sys.prefix} pandas

팬더 데이터프레임이란 무엇입니까?

Pandas DataFrame은 열에 서로 다른 유형의 데이터를 저장할 수 있는 2차원 레이블 데이터 구조입니다. 이는 데이터를 표 형식으로 저장하는 표준적인 방법이며, 행에는 관측값이, 열에는 정보의 이름이 저장됩니다. 예를 들어, 가격 는 열의 이름이 될 수 있고 2, 3, 4는 가격 값이 될 수 있습니다.

데이터 프레임은 통계학자 및 기타 데이터 전문가들에게 잘 알려져 있습니다. 아래 그림은 데이터 프레임의 형태를 보여줍니다. 측면에는 행 인덱스가 표시되고 상단에는 열 이름이 지정되어 있습니다.

레이블이 지정된 행 인덱스와 이름이 지정된 열을 사용하는 Pandas DataFrame 레이아웃

시리즈란 무엇입니까?

시리즈는 1차원 데이터 구조입니다. 정수, 실수, 문자열 등 모든 데이터 유형을 저장할 수 있으며, 계산을 수행하거나 1차원 배열을 반환할 때 유용합니다. 시리즈는 정의상 여러 열을 가질 수 없습니다. 여러 열을 가져야 하는 경우에는 데이터프레임 구조를 사용하십시오.

Pandas Series 생성자는 다음과 같은 매개변수를 받습니다.

  • 날짜 : 리스트, 딕셔너리 또는 스칼라 값일 수 있습니다.
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

인덱스를 추가하려면 다음을 사용하세요. index행의 이름을 지정하며, 길이는 열의 크기와 같아야 합니다.

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

아래 예시에서는 세 번째 행에 결측값이 있는 Pandas 시리즈를 생성합니다. 결측값은 다음과 같습니다. Python 다음과 같이 표시됩니다 NaN예산 및 np.nan NumPy를 이용하면 인위적으로 하나를 생성할 수 있습니다.

pd.Series([1,2,np.nan])

산출

0    1.0
1    2.0
2    NaN
dtype: float64

Pandas DataFrame 만들기

NumPy 배열을 DataFrame으로 변환하려면 다음 방법을 사용할 수 있습니다. pd.DataFrame()반대로도 가능합니다. DataFrame을 다시 배열로 변환하려면 다음을 사용하세요. np.array()df.to_numpy()현재 Pandas 문서에서 권장하는 방식입니다.

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

사전은 입력값으로서 똑같이 잘 작동합니다. pd.DataFrame().

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
연령 이름
0 30 요한 복음
1 40 스미스

팬더 범위 데이터

Pandas는 시계열의 인덱스가 되는 날짜 범위를 생성하는 편리한 API를 제공합니다. 호출 형식은 다음과 같습니다.

pd.date_range(start, periods, freq):

  • 첫 번째 매개변수는 시작 날짜입니다.
  • 두 번째 매개변수는 기간 수입니다(종료 날짜가 지정된 경우 선택 사항).
  • 마지막 매개변수는 빈도(일)입니다. 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')

버전 참고: 월별칭 M 위에서 사용된 기능은 Pandas 2.2부터 사용이 권장되지 않으며 Pandas 3.0에서 제거되었습니다. 현재 버전에서는 해당 기능을 사용하지 마십시오. freq='ME' 월말 기준으로 계산하면 결과 지수는 동일합니다.

데이터 검사

데이터셋의 앞부분이나 뒷부분을 확인하려면 다음을 사용할 수 있습니다. head() or tail() 아래 Pandas 예제에서 보여주는 것처럼 DataFrame에서 호출됩니다.

단계 1) NumPy를 사용하여 4열 6행의 난수 시퀀스를 생성하세요.

random = np.random.randn(6,4)

단계 2) 그다음에는 Pandas를 사용하여 DataFrame을 생성합니다.

dates_m 인덱스로 사용하기 때문에 각 행에는 날짜에 해당하는 이름이 지정되고, 4개의 열에는 다음과 같은 이름이 지정됩니다. columns 논의.

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

때문에 np.random.randn() 시드 없이 실행하면 결과가 여기에 인쇄된 결과와 다를 수 있습니다. 문의하십시오. np.random.seed(0) 먼저 고정된 세트를 재현하고 싶다면.

단계 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) 꼬리 함수를 사용하면

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) 데이터에 대한 단서를 얻는 아주 좋은 방법은 다음과 같습니다. describe()이 함수는 데이터 세트의 개수, 평균, 표준 편차, 최소값, 최대값 및 백분위수를 보고합니다.

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

데이터 조각

슬라이싱은 데이터프레임에서 행 또는 열의 부분 집합을 추출합니다. 열 이름을 사용하여 추출할 수 있습니다.trac아래 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

The 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

여러 행과 열을 선택하는 또 다른 방법이 있습니다. iloc[] 열 이름 대신 정수 위치를 사용하므로 아래 코드는 위와 동일한 DataFrame을 반환합니다.

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

열 삭제

열을 삭제하려면 다음을 사용하세요. df.drop()이름을 전달하면서 columns 논의.

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

연쇄

두 개의 DataFrame을 연결할 수 있습니다. pd.concat()먼저 두 개의 프레임을 만드세요.

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

그다음 두 개를 연결하세요.

df_concat = pd.concat([df1,df2]) 
df_concat
연령 name
0 25 요한 복음
1 30 스미스
2 50
3 26 아담
4 11 스미스

중복 삭제

데이터 세트에 중복된 정보가 포함된 경우, drop_duplicates() 중복된 행을 제외하는 쉬운 방법입니다. df_concat 중복된 관측값을 가지고 있습니다. Smith 두 번 나타납니다 name 열입니다.

df_concat.drop_duplicates('name')
연령 name
0 25 요한 복음
1 30 스미스
2 50
3 26 아담

정렬 값

프레임을 정렬하려면 다음을 사용하세요. sort_values(). 그 주 Age 여기서는 텍스트로 생성되었으므로 행이 문자열 순서로 정렬됩니다.

df_concat.sort_values('Age')
연령 name
4 11 스미스
0 25 요한 복음
3 26 아담
1 30 스미스
2 50

열 이름 바꾸기

rename() Pandas에서 열 이름을 변경하는 방법입니다. 각 쌍에서 첫 번째 값은 현재 열 이름이고 두 번째 값은 새 열 이름입니다.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl
0 25 요한 복음
1 30 스미스
2 50
3 26 아담
4 11 스미스

Pandas 메서드 빠른 참조

이 표는 각 일반적인 작업을 해당 작업을 수행하는 Pandas 메서드에 매핑합니다.

태스크 방법
데이터 가져 오기 read_csv
시리즈 만들기 연속
데이터프레임 생성 데이터 프레임
기간 생성 DATE_RANGE
리턴 헤드 머리
꼬리를 돌려보내다 꼬리
설명 설명
이름을 사용하여 슬라이스 데이터 이름['열 이름']
행을 사용하여 슬라이스 데이터_이름[0:5]

자주 묻는 질문

상담 예약 번호 pd.read_csv() 경로 또는 URL열 레이블에 이름을 추가하고, 다른 구분 기호를 사용하려면 `sep`를 사용하고, 필요한 열만 유지하려면 `usecols`를 사용하세요.

isnull() 함수는 해당 행이나 열을 null로 표시하고, dropna() 함수는 해당 행이나 열을 제거하며, fillna() 함수는 상수 또는 열 평균과 같은 통계량으로 대체합니다. 누락된 항목은 NaN으로 출력됩니다.

groupby() 함수는 키 열을 기준으로 행을 그룹으로 나누고, 각 그룹에 개수, 합계 또는 평균과 같은 집계 작업을 적용한 다음, 결과를 새로운 프레임으로 결합합니다.

불리언 마스크를 만들어서 대괄호 안에 넣어 전달합니다. 예를 들어 df[df.Age == 30]과 같이 사용합니다. 마스크를 앰퍼샌드(&) 및 파이프(|) 연산자로 결합하고, 이를 래핑합니다.ping 각 비교는 괄호 안에 있습니다.

pd.merge()는 키 열을 기준으로 행을 일치시키는 방식입니다. SQL join 함수는 how 값을 inner, left, right 또는 outer로 설정하여 실행합니다. concat() 함수는 키를 일치시키는 대신 프레임을 쌓습니다.

`df.to_csv('out.csv', index=False)`는 쉼표로 구분된 파일을 생성하고, `df.to_excel('out.xlsx')`는 워크시트를 생성합니다. 드롭ping 인덱스는 다음 읽기 시 이름이 지정되지 않은 첫 번째 열을 방지합니다.

AI 어시스턴트는 새로운 프레임을 분석하고, 실행할 만한 describe, groupby, plot 함수를 제안하며, 데이터 유형이 특이하거나 null 값이 많은 열에 플래그를 지정합니다. 모든 제안 사항은 원본 데이터와 비교하여 검증합니다.

예. GitHub 부조종사 일반 주석을 작동하는 Pandas 코드로 완성합니다. Jupyter 셀. Rev결과를 신뢰하기 전에 데이터 유형과 행 수를 확인하십시오.

이 게시물을 요약하면 다음과 같습니다.