Pandas
데이터 형식
시리즈(Series)
데이터가 순차적으로 나열된 1차원 배열 형태
딕셔터리로 Series 생성시 -> key 는 시리즈의 인덱스와 대응된다.
리스트로 Series 생성시 -> 리스트의 인덱스가 시리즈의 인덱스로 대응된다.
dict_data = {'a':1,'b':2,'c':3} series_data=pd.Series(dict_data) a 1 b 2 c 3 list_data = ['2022-10-11',3.14,'ABC',100,True] series_data1=pd.Series(list_data) 0 2022-10-11 1 3.14 2 ABC 3 100 4 True
데이터프레임(DataFrame)
행과 열로 만들어지는 2차원 배열 형태
열은 각각의 시리즈 객체이다. key 값이 열 이름이 된다.
dict_data = {'c0':[1,2,3],'c1':[4,5,6],'c2':[7,8,9],'c3':[10,11,12],'c4':[13,14,15]} df=pd.DataFrame(dict_data) c0 c1 c2 c3 c4 0 1 4 7 10 13 1 2 5 8 11 14 2 3 6 9 12 15
데이터 내용 확인
- columns : 컬럼명 확인
- head() : 상단 5개 확인
- tail() : 하단 5개 확인
- shape : 행,열 크기 확인
- info() : 데이터에 대한 정보 확인
- 행,열 크기, 컬럼명..
- type() : 데이터 타입
열선택
열 1개 선택 : 시리즈 객체를 반환한다.
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object') names = t['Name'].head() # t.Name 으로도 사용 가능 print(names) print(type(names)) 0 Kelly, Mr. James 1 Wilkes, Mrs. James (Ellen Needs) 2 Myles, Mr. Thomas Francis 3 Wirz, Mr. Albert 4 Hirvonen, Mrs. Alexander (Helga E Lindqvist) Name: Name, dtype: object <class 'pandas.core.series.Series'>
열 다중 선택 : 데이터 프레임으로 반환 한다.
names_age = t[["Name", "Age"]] print(names_age) print(type(names_age)) Name Age 0 Kelly, Mr. James 34.5 1 Wilkes, Mrs. James (Ellen Needs) 47.0 2 Myles, Mr. Thomas Francis 62.0 3 Wirz, Mr. Albert 27.0 4 Hirvonen, Mrs. Alexander (Helga E Lindqvist) 22.0 <class 'pandas.core.frame.DataFrame'>
데이터 필터링
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked 0 892 0 3 Kelly, Mr. James male 34.5 0 0 330911 7.8292 NaN Q 1 893 1 3 Wilkes, Mrs. James (Ellen Needs) female 47.0 1 0 363272 7.0000 NaN S 2 894 0 2 Myles, Mr. Thomas Francis male 62.0 0 0 240276 9.6875 NaN Q 3 895 0 3 Wirz, Mr. Albert male 27.0 0 0 315154 8.6625 NaN S 4 896 1 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female 22.0 1 1 3101298 12.2875 NaN S
Boolean 인덱싱 : true 만 추출
# 35살 초과인 데이터 추출 d1 = t["Age"]>35 print(t[d1]) PassengerId Survived Pclass \ 1 893 1 3 2 894 0 2 11 903 0 1 13 905 0 2 14 906 1 1
isin() : 각각의 요소가 데이터 프레임, 시리즈에 존재하는지 파악하여 true/false 반환
# Pclass 변수의 값이 1일 경우, True/False 값 반환 t['Pclass'].isin([1]) PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked 11 903 0 1 Jones, Mr. Charles Cresson male 46.0 0 0 694 26.0000 NaN S 12 904 1 1 Snyder, Mrs. John Pillsbury (Nelle Stevenson) female 23.0 1 0 21228 82.2667 B45 S 14 906 1 1 Chaffee, Mrs. Herbert Fuller (Carrie Constance... female 47.0 1 0 W.E.P. 5734 61.1750 E31 S 20 912 0 1 Rothschild, Mr. Martin male 55.0 1 0 PC 17603 59.4000 NaN C 22 914 1 1 Flegenheim, Mrs. Alfred (Antoinette) female NaN 0 0 PC 17598 31.6833 NaN
isna() : 결측값은 true 반환, 그외에는 false 반환
notna() : 결측값은 false 반환, 그외에는 true 반환
9 901 0 3 Davies, Mr. John Samuel male 21.0 2 0 A/4 48871 24.1500 NaN S 10 902 0 3 Ilieff, Mr. Ylio male NaN 0 0 349220 7.8958 NaN S t["Age"].isna()[0:12] #10번째에 Age 가 NaN 9 False 10 True # NaN 은 true 값 반환 11 False t[t["Age"].isna()].head() PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked 10 902 0 3 Ilieff, Mr. Ylio male NaN 0 0 349220 7.8958 NaN S
결측치 제거
- dropna(axis=0) : 결측치 존재하는 행 전체 제거
- dropna(axis=1) : 결측치 존재하는 열 전체 제거
이름과 인덱스로 행, 열 선택
loc[] : 행 이름과 열 이름 사용
# 나이가 35세 초과인 사람의 이름과 나이 출력 t.loc[t['Age']>35, ['Name', 'Age']]
iloc[] : 행번호와 열 번호 사용
통계 관련 기능
mean() : 평균값
median() : 중앙값
describe() : 통계 요약
agg() : 여러개 열에 여러 함수 적용
t.agg({'Age':['min', 'max']}) Age min 0.17 max 76.00
groupby() : 그룹별 집계
value_counts() : 값 개수
행, 열추가
- DataFrame.loc[새로운 행 이름] = 데이터 값
- DataFrame['열이름']
'Development > Python' 카테고리의 다른 글
NumPy 사용 (0) | 2023.05.09 |
---|---|
Conda python 버전 업데이트 (0) | 2023.04.15 |
Mac 에서 Conda 설치 (0) | 2023.04.05 |
파이썬 가상 환경 실행 및 VS Code 설정 (0) | 2023.03.27 |
[파이썬 문법] 데코레이터 함수 (0) | 2023.03.13 |