[Pandas] DataFrame
Pandas DataFrame, pandas.DataFrame, 데이터프레임
정의
pandas.DataFrame 은 2차원 레이블 테이블. 각 열이 Pandas Series, 모든 열이 같은 Pandas Index (행 라벨) 를 공유. SQL 테이블 / Excel 시트 / R data.frame 의 Python 대응체.
생성
python
import pandas as pd
# 1. dict of lists (가장 흔함)
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [30, 25, 35],
'city': ['Seoul', 'Busan', 'Seoul'],
})
print(df) 결과
name age city
0 Alice 30 Seoul
1 Bob 25 Busan
2 Charlie 35 Seoul| name | age | city | |
|---|---|---|---|
| 0 | Alice | 30 | Seoul |
| 1 | Bob | 25 | Busan |
| 2 | Charlie | 35 | Seoul |
다른 생성 방식
# list of dicts
pd.DataFrame([{'a': 1, 'b': 2}, {'a': 3, 'b': 4}])
# 2D array + columns
pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
# from records
pd.DataFrame.from_records([(1, 'A'), (2, 'B')], columns=['id', 'name'])
# CSV 등 파일
pd.read_csv('data.csv')
핵심 속성
| 속성 | 의미 |
|---|---|
df.shape | (n_rows, n_cols) |
df.columns | Index 객체 (열 이름) |
df.index | Index 객체 (행 라벨) |
df.dtypes | 각 열의 타입 |
df.values | 2D numpy array |
df.size | 원소 총 개수 |
df.T | 전치 (transpose) |
빠른 탐색 메서드
df.head() # 상위 5개
df.tail(3)
df.info() # 메모리, dtype, null 개수
df.describe() # 수치형 통계
df.sample(5) # 무작위 5개
df.value_counts() # Series 만, 빈도
python
df = pd.DataFrame({
'age': [25, 30, 35, 40, 45],
'salary': [3000, 4500, 6000, 7500, 9000],
})
print(df.describe()) 결과
age salary
count 5.000000 5.000000
mean 35.000000 6000.000000
std 7.905694 2371.708245
min 25.000000 3000.000000
25% 30.000000 4500.000000
50% 35.000000 6000.000000
75% 40.000000 7500.000000
max 45.000000 9000.000000열 추가 / 수정 / 삭제
df['bmi'] = df['weight'] / (df['height']/100) ** 2 # 새 열
df['age'] = df['age'] + 1 # 수정
df['constant'] = 100 # broadcast
df.drop(columns=['bmi'], inplace=False) # 삭제 (사본 반환)
행 추가
# Modern pandas
new_row = pd.DataFrame([{'name': 'Dave', 'age': 28}])
df = pd.concat([df, new_row], ignore_index=True)
# (pandas 1.x 의 df.append 는 deprecated)
자주 쓰는 변환
df.rename(columns={'old': 'new'})
df.astype({'age': 'int64', 'city': 'category'})
df.set_index('name')
df.reset_index()
df.sort_values('age')
df.sort_index()
DataFrame vs Series 의 관계
df['name'] # Series
df[['name', 'age']] # DataFrame (대괄호 2개)
df.iloc[0] # Series (한 행)
df.iloc[[0]] # DataFrame (한 행이지만 2D)
대괄호 개수 / iloc 단일 vs 리스트 가 반환 타입을 결정.
참고
이 글의 용어 (4개)
- [Pandas] 개요pandas
- 정의 pandas 는 Python 의 데이터 분석/조작 라이브러리. 두 가지 핵심 자료형을 중심으로 동작한다. - : 1차원 레이블 배열 (NumPy array + index) …
- [Pandas] Indexpandas
- 정의 는 행 / 열 라벨을 보관하는 객체. / 의 모든 라벨은 Index. 정렬, 정합성, 빠른 lookup 의 기반. 기본은 RangeIndex (0, 1, 2, ...) 지만…
- [Pandas] read_csv / to_csvpandas
- 정의 는 CSV (Comma-Separated Values) 파일 또는 비슷한 텍스트 형식을 으로 읽는 함수. pandas 사용의 99% 가 여기서 시작. 대응 출력 함수는 . …
- [Pandas] Seriespandas
- 정의 는 1차원 레이블 배열. NumPy + 의 결합. 의 한 열이 곧 Series. 핵심 속성 | 속성 | 의미 | |:---|:---| | | numpy array | | |…
이 개념을 다룬 위키 페이지 (25)
- wiki[Pandas] apply / map
- wiki[Pandas] .at / .iat
- wiki[Pandas] Boolean Indexing
- wiki[Pandas] Categorical
- wiki[Pandas] concat
- wiki[Pandas] drop_duplicates / duplicated
- wiki[Pandas] groupby
- wiki[Pandas] Index
- wiki[Pandas] join
- wiki[Pandas] .loc / .iloc
- wiki[Pandas] info / memory_usage / describe
- wiki[Pandas] merge
- wiki[Pandas] 개요
- wiki[Pandas] 성능 / 메모리 최적화
- wiki[Pandas] pipe / method chaining
- wiki[Pandas] query / eval
- wiki[Pandas] read_csv / to_csv
- wiki[Pandas] read_excel / to_excel
- wiki[Pandas] read_json / to_json
- wiki[Pandas] rolling / expanding
- wiki[Pandas] sample
- wiki[Pandas] 컬럼 선택
- wiki[Pandas] Series
- wiki[Pandas] sort_values / sort_index
- wiki[Pandas] DataFrame.style
💬 댓글