Milky's note

[Part 1] Pandas(기본 설명) 본문

Python/요약 정리

[Part 1] Pandas(기본 설명)

밀뿌 2021. 12. 12. 21:10

1. pandas 의 Series 와 DataFrame

1.1 Series

1차원, 1개의 column은 Series라고 한다.

mylist = [1, 2, 3, 4]
pd.Series(mylist)

#실행결과
0    1
1    2
2    3
3    4
dtype: int64
 

1.2 DataFrame

방법 1. list로 만들기

company1 = [['삼성', 2000, '스마트폰'],
['현대', 1000, '자동차'],
['네이버', 500, '포털']]
 
df1.columns = ['기업명', '매출액', '업종'] #컬럼 이름 수정

df1=pd.DataFrame(company1)
 
 # 실행 결과

 

방법 2. dict로 만들기

company2 = {'기업명':['삼성', '현대', '네이버'], 
            '매출액': [2000, 1000, 500], 
            '업종': ['스마트폰', '자동차', '포털']
           }
           
df2 = pd.DataFrame(company2)

 

#index를 특정 컬럼으로 만들기
df1.index = df1['기업명']

2. csv 파일 읽어오기

pd.read_csv('url')

주요 함수

#컬럼 출력
df.columns

#ROW(행) 갯수
df.shape[0],
len(df)

#COLUMN(열) 갯수
df.shape[1]

#index 출력
df.index

#정보 확인 (주로 null값을 확인할 때 사용)
df.info()

#통계 정보 확인
df.describe()

#shape 확인(tuple 형태로 반환되며, 첫번째는 row, 두번째는 column의 숫자를 의미)
df.shape

#상위 5개 컬럼 출력
df.head()

#하위 5개 컬럼 출력
df.tail()

정렬(sort)

#index 정렬
#오름차순 정렬 (default)
df.sort_index()

#내림차순 index 정렬(ascending에 따라 오름차순, 내림차순이 변경됨)
df.sort_index(ascending=False)


#column 정렬
#오름차순 정렬
df.sort_values(by='키')

#내림차순 정렬
df.sort_values(by='키', ascending=True)

#복수정렬(ascending로 오름차순, 내림차순 설정)
df.sort_values(by=['키', '브랜드평판지수'], ascending=False)

 

3.  인덱싱

#column 선택하는 법
df['이름']
df.이름
#범위 선택 (range selection)

#단순 index에 대한 범위 선택
df[:3]
df.head(3)

#loc
df.loc[:, '이름']

#iloc (position으로 색인)
df.iloc[:, [0, 2]]

조건을 활용한 인덱싱

Boolean Index 로 받은 Index 를 활용해서 True인 값만 색인 할 수 있다.

df[ df['키'] > 180 ]
 
하지만 모든 컬럼을 출력해야한다는 단점이 있다.
 
특정 컬럼을 출력하려면 다음과 같은 방법을 사용하면 된다.
 
df.loc[ df['키'] > 180, '이름']
 
 

isin을 활용한 인덱싱

my_condition = ['apple, 'banana']
 
df.loc[ df['과일'].isin(my_condition)]
 
 

4.  결측값(Null)

#결측값 확인
df.isna()

df['그룹'].isnull() #boolean으로 출력
df['그룹'][df['그룹'].isnull()]

#null이 아닌 값 확인
df['그룹'].notnull() #boolean으로 출력
df['그룹'][df['그룹'].notnull()]
 

5.  DataFrame 관리

#데이터프레임 복사
copy_df = df.copy()

#row 추가
df = df.append({'이름': '밀키', '생년월일': '1993-01-01', '혈액형': 'A'}, ignore_index=True)

dictionary 형태의 데이터를 만들어 준다음 append() 함수를 사용하여 데이터를 추가할 수 있다. 
반드시, ignore_index=True 옵션을 같이 추가해 주셔야 에러가 안난다!!!!!!!!!!!!!!!!!!

#column 추가
df['국적'] = '대한민국'

위처럼 대입하면 전부 동일한 값이 삽입되어서, 조건에 따라서 바꿔주려면 아래와 같이 하면 된다.
df.loc[ df['이름'] == '밀키' , '국적'] = 'korea'
#숫자형 컬럼들 연산(data type이 float나 int형 인 column)
df['키'].min() #최소
df['키'].max() #최대
df['키'].sum() #합계
df['키'].mean() #평균

var, variance(분산) / std, standard deviation (표준 편차)
분산과 표준편차는 데이터가 평균으로부터 얼마나 떨어져 있는지 정도를 나타낸다.
분산은 (데이터 - 평균) ** 2 을 모두 합한 값 / n
표준편차는 분산의 루트

df['키'].var() #분산
df['키'].std() #표준 편차

df['키'].count() #갯수
df['키'].median() #중앙값
df['키'].mode() #최빈값

6.  Pivot Table

  • 피벗테이블은 엑셀의 피벗테이블과 동일
  • 데이터 열 중에서 두 개의 열을 각각 행 인덱스, 열 인덱스로 사용하여 데이터를 조회하여 펼쳐놓은 것을 의미
  • 왼쪽에 나타나는 인덱스를 행 인덱스, 상단에 나타나는 인덱스를 열 인덱스
# index는 행 인덱스
# columns는 열 인덱스
# values는 조회하고 싶은 값
# aggfunc에는 추가 계산 옵션 (np.sum, np.mean) - 기본값은 평균

pd.pivot_table(df, index='그룹', columns='혈액형', values='브랜드평판지수', aggfunc=np.mean)

7.  Groupby

  • 데이터를 그룹으로 묶어 분석할 때 활용
  • 특정, 그룹별 통계 및 데이터의 성질을 확인하고자 할 때 활용

groupby와 함께 사용 가능

  • count() - 갯수
  • sum() - 합계
  • mean() - 평균
  • var() - 분산
  • std() - 표준편차
  • min()/max() - 최소값, 최대값
df.groupby('그룹').mean()
 
#특정한 열만 출력하고 싶을 때
df.groupby('혈액형')['키'].mean()

#복합 인덱스
df.groupby(['혈액형', '성별']).mean()

#Multi-Index 데이터 프레임을 피벗 테이블로 변환
df.unstack('혈액형')
df.unstack('성별')

#인덱스 초기화 (reset_index)
df.reset_index()

 

'Python > 요약 정리' 카테고리의 다른 글

[Part 2] 시각화-라인그래프  (0) 2022.01.10
[Part 1] Pandas(전처리)  (0) 2021.12.13
[참고 링크]  (0) 2021.12.02
[Part 1] Numpy  (0) 2021.12.01
[Part 1] 파이썬 문법 기초 내용 정리  (0) 2021.12.01
Comments