본문 바로가기
Development/Python

Pandas 사용

by 폴피드 2023. 5. 23.
728x90
반응형

시리즈(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[] : 행 이름과 열 이름 사용
    • iloc[] : 행번호와 열 번호 사용
# 나이가 35세 초과인 사람의 이름과 나이 출력
t.loc[t['Age']>35, ['Name', 'Age']]
  • 통계 관련 기능
    • mean() : 평균값
    • median() : 중앙값
    • describe() : 통계 요약
    • agg() : 여러개 열에 여러 함수 적용
    • groupby() : 그룹별 집계
    • value_counts() : 값 개수
  • 행, 열추가
    • DataFrame.loc[새로운 행 이름] = 데이터 값
    • DataFrame['열이름']
728x90
반응형

'Development > Python' 카테고리의 다른 글

머신러닝 관련 용어  (0) 2023.06.12
colab 에서 kaggle 설정  (0) 2023.06.07
NumPy 사용  (0) 2023.05.09
Conda python 버전 업데이트  (0) 2023.04.15
Mac 에서 Conda 설치  (0) 2023.04.05