KT 에이블스쿨 5일차(2)

박기범·2023년 2월 6일
0

에이블스쿨

목록 보기
8/95
post-custom-banner

판다스

판다스의 라이브러리 가져오기

	import pandas as pd

넘파이 라이브러리를 가져오는 것처럼 판다스도 마찬가지로 별칭을 주어 코드를 줄입니다.


데이터프레임

데이터 분석에서 가장 중요한 것은 데이터 구조입니다. 데이터프레임은 관계형 데이터베이스의 테이블 또는 엑셀과 같은 2차원 구조를 가집니다. 변수들의 집합을 각 열의 변수라고 부릅니다. 열의 의미는 정보이며 행의 의미는 분석단위입니다.

시리즈

시리즈는 하나의 정보에 대한 데이터들의 집합입니다. 데이터프레임의 하나의 을 떼어낸 것을 의미합니다.

판다스 활용

CSV파일의 데이터를 가지고 분석 혹은 예측을 합니다. 이를 위해서는 파일을 읽어올 줄 알아야 합니다. read_csv()함수를 사용해서 CSV파일에서 데이터를 읽어올 수 있습니다.
상위 하위 데이터 확인하는 함수는 head(), tail()함수가 있습니다. 괄호안에 숫자를 작성하면 해당 숫자의 행만큼 출력해서 보여줍니다.

    data = pd.read_csv('파일 위치')
    data.head(10) #상위 10개의 행만 출력해서 보여줌


열 확인

데이터명.columns을 사용해주면 열 이름을 확인할 수 있습니다

	print(data.columns)

열 정보를 확인해주기 위해서는 데이터명.columns() 를 사용합니다.

	print(data.columns())

열 데이터타입(자료형)에 대해서 알고 싶을때는 데이터명.dtypes를 사용합니다.

	data.dtypes

그러면 각 열들의 데이터타입을 확인할 수 있습니다. 만약 object면 문자열이고 int64면 정수형을 뜻합니다. 만약 더 자세한 정보를 알고 싶다면 데이터명.info()를 사용합니다.

    data.info()

위 코드를 작성하면 더 자세한 열 정보를 알 수 있습니다. 데이터타입 + 행의 갯수를 알 수 있습니다.


정렬하는 법

sort_values() 메소드로 특정 열을 기준으로 정렬합니다.
ascending 옵션을 설정해 오름차순, 내림차순을 설정할 수 있습니다.
ascending=True: 오름차순 정렬(기본값)
ascending=False: 내림차순 정렬

데이터프레임 조회

열 조회에는 다양한 방법이 있습니다.
1차원(시리즈)로 조회하거나 2차원으로 조회하는 방식이 있습니다.

1차원 조회 방식은 아래와 같습니다.

	데이터명.컬럼명
    또는
    데이터명['컬럼명']

2차원 조회 방식은 아래와 같습니다.

	데이터명[['컬럼명','컬럼명']]

2차원 조회같은 경우에는 컬럼명을 리스트로 입력한다는 것이 중요합니다.



조건으로 조회하기

행 조건을 걸어 조건에 만족하는 데이터만 조회를 합니다.
컬럼명 같은 경우는 생략이 가능하고 만약 한 개만 작성하면 결과가 시리즈로 출력되고 리스트로 작성한다면 결과가 프레임으로 출력이 됩니다.
작성법은 아래와 같습니다.

	데이터명.loc[행 조건, 컬럼명]
    data.loc[data['Age']>17]

위와 같이 작성한다면 age 값이 17보다 큰 행들을 조회해서 출력합니다.

만약 여러조건을 걸어주어 조회할려면 and나 or 대신에 &, |을 사용해줍니다. 또한 각 조건을 소괄호로 묶어주어야 합니다.

	데이터명.loc[행 조건, 컬럼명]
    data.loc[(data['Age']>17) | (data['Pclass'] == 'A')] 

나이가 17세 초과이거나 객실등급이 A등급인 사람들만 조회해서 출력해줍니다.

loc조건 조회에는 isin()between() 메소드가 있습니다.
isin([값1, 값2,..., 값n]): 값1 또는 값2 또는...값n인 데이터만 조회
between(값1, 값2): 값1 ~ 값2까지 범위안의 데이터만 조회

사용법은 아래와 갑습니다.

	data.loc[data['Pclass'].isin(['A','B'])]
    # 등급이 A또는 B등급인 사람들을 조회해줌
    data.loc[data['Age'].between(17, 20)]
    # 나이가 17 ~ 20살인 사람들을 조회해줌


데이터프레임 집계함수

집계함수에는 합을 구해주는 sum(), 평균을 구해주는 mean(), 개수를 구해주는 count() 등이 있습니다.

mean()사용

	titanic.Fare.mean()

dataframe이름이 titanic이고 열 이름이 Fare입니다.


groupby()함수
문법은 아래와 같습니다.
데이터명.groupby( ‘집계기준변수’, as_index = )[‘집계대상변수’].집계함수
집계기준 변수: ~~별 에 해당되는 변수 혹은 리스트. 범주형 변수
집계대상 변수 : 집계함수로 집계할 변수 혹은 리스트

# MaritalStatus 별 Age 평균 --> 데이터프레임
data.groupby('MaritalStatus', as_index=True)[['Age']].mean()

as_index=False를 설정하면 행 번호를 기반으로 한 정수 값이 인덱스로 설정됩니다.

# MaritalStatus 별 Age 평균 --> 데이터프레임
data.groupby('MaritalStatus', as_index=False)[['Age']].mean()

agg()함수
열 하나에 대한 합계, 평균등의 집계를 한번에 수행할 수 있습니다.
agg()함수에 원하는 집계함수 이름을 리스트 형태로 지정합니다.

    # 객실 등급별 나이 합계, 평균, 최댓값, 최솟값
    data.groupby('Pclass')['Age'].agg(['sum', 'mean', 'max', 'min'])

여러 열에 대해 여러 집계를 한번에 수행도 가능합니다.
집계 대상 열과 집게 방법을 리스트 형태로 지정 가능합니다.

    # 객실 등급별 나이와 운임가격 합계, 평균, 최댓값, 최솟값
    age.groupby('Pclass')[['Age','Fare].agg(['sum', 'mean', 'max', 'min'])

여러 열에 대한 각 열마다 다른 집계를 한번에 수행할 수도 있습니다.
'열 이름':'잡계 방법'형태로 key:value를 갖는 딕셔너리 형태롤 지정합니다.

    # 객실 등급별 나이 평균, 운임가격 합계
    age.groupby('Pclass', as_index=False).agg([{'Age':'mean', 'Fare:'min'})







5일차에는 파이썬 라이브러리인 넘파이와 판다스를 공부했습니다 판다스에 대해 블로그 해봤는데 넘파이와 판다스에 복습은 자주 해줘야할 것 같다고 느꼈습니다...




※공부하고 있어 다소 틀린점이 있을 수 있습니다. 언제든지 말해주시면 수정하도록 하겠습니다.
※용어에 대해 조금 공부 더 해서 수정하겠습니다.

profile
개발자가 되기 위한 한걸음
post-custom-banner

0개의 댓글