2023. 5. 25. 23:25ㆍ카테고리 없음
오늘은 본격적으로 판다스 문법을 배웠다. 이것을 잘 배워야 데이터 전처리도 잘하고 나중에 도형도 내가 원하는대로 보일 수 있을 것이다. 먼저 느낀 평가는 엑셀이랑 데이터베이스랑 비슷한 느낌이 들었다. 그리고 엑셀 파일 가공을 소스로 해결할 수 있다는게 굉장한 장점으로 다가왔다.
titanic_df = pd.read_csv('/content/titanic.csv') #df(dataFrame)
titanic_df.head() # 처음부터 5건 출력
read_csv라는 메소드는 csv 파일을 불러오는데 사용된다.
head()는 데이터 프레임의 첫 부분을 확인하는 데 쓴다. n개의 행을 반환할 수 있다.
import os
import pandas as pd
ROOT_DIR = '/content'
#df는 데이터 프레임의 약자임.
gender_df = pd.read_csv(os.path.join(ROOT_DIR, 'gender_submission.csv'))
그리고 os 라이브러리를 이용해서 루트 디렉토리를 정의한 뒤 이렇게 호출할 수도 있다.(이것은 타이타닉 캐글에서 가져온 csv파일).
shape()는 행(row),열(column)의 갯수를 튜플 형태로 반환한다.
pclass = titanic_df['Pclass'].value_counts()
print(pclass.sort_index())
value_counts() 메소드는 해당 데이터프레임에서 컬럼안에 속하는 값들을 카운팅 해준다.
sort_index()를 쓰면 해당 값들을 기준으로 정렬해준다. 내림차순 하고싶으면 파라미터에 ascending=False 해주면 된다.
그리고 리턴값은 시리즈 형이다.
# 실습코드
print('생존 :',titanic_df['Survived'].value_counts()[1])
print('사망 :',titanic_df['Survived'].value_counts()[0])
생존자 수, 사망자 수는 이렇게 뽑으면 된다.
# 실습코드
#plot: 함수를 시각화하는 그래프 유형 지원한다.
#pie : 원형
Survive = titanic_df['Survived'].value_counts()
print(Survive)
Survive.plot.pie(autopct = '%1.2f')
원형 그릴 때. 처음 보는 단어들이 너무 많다.
Series 타입.
Series는 컬럼명이 하나인 것을 나타내는 객체이다. 그래서 컬럼명은 정할 수 없고 index는 정할 수가 있다.
import pandas as pd
# Series 생성 예시
data = ['apple', 'banana', 'orange', 'grape']
series = pd.Series(data)
# 단어 검색
result = series.str.contains('an')
print(result)
########################
s2= pd.Series([80,90,100], index=['국','영','수'])
s2
#####################
help(pd.Series)
여러 개의 열을 할 때 [[]] 이렇게 해야 하는 이유.
결론부터 말하면 엑셀 파일이라서 그렇다.
우리가 파이썬에서 배운 개별 파일들은 [],[] 이렇게 저장할 수 있다. ex) print([1,2,3,4],[4,5,6,7])
하지만 엑셀의 시선에서 놓고보면 얘네들은 별개의 두 개의 파일을 조회하는 것이다. 그래서 판다스에서는 오류가 난다.
따라서 두 개의 리스트여도 하나의 큰 리스트 안에 있는 것이 엑셀이기에 [[]] 이 형식으로 써줘야 한다.
axis는 축이라는 뜻이다. 기본값은 axis = 0 이고 행 기준으로 한다.
print(titanic_df.shape)
titanic_df.drop("Age_0",axis=1)
그래서 컬럼을 기준으로 할 때는 axis=1(열 전체 삭제 해야하니까)을 사용한다.
iloc은 integer location. 숫자 기준(특정 행이나 열의 위치 기반)으로 정렬한다는 의미이다.
loc은 lable location. 라벨 붙은 애들(인덱스명이나 컬럼명) 기준으로 정렬한다는 의미이다.
Group by는 예전에 DB 잠깐 할 때 배웠는데 다 잊어버렸다...
현재는 뭐 이지경이다. 다시 해야지 뭐.
# 8-7 특정 칼럼만 적용하려면 DataFrameGroupBy 객체에 해당 칼럼을 필터링한 뒤 aggregation함수 적용
titanic_df.groupby('Pclass')[['Age', 'Name']].count()
마지막 것들은 유민님 특강을 통해서 해결됐다. 결손데이터 등..
fillna, dropna lambda를 배우고 조금 이해했다.
좀 이해 안되는 것은 lambda인데 자동으로 매개변수를 lambda의 파라미터에 할당을 해서 작업을 수행한다는 것이 좀.. 이해가 안됐다. 아무래도 판다스에서 엑셀을 뿌릴 때, apply는 그 매개변수를 안에 넣도록 첫번째 인자값이 펑션이 들어가니까 그런 것이 아닌가 생각을 한다.
이외에도 concat이라는 리스트 합치기, left merge, rightmerge에 대해 배웠다.