목차
- Series와 DataFrame, 제목컬럼 추가
- csv, excel 파일 불러오기
- 컬럼 및 인덱스 재정의, 지정 (df.columns = [], df.index)
- info(), describe(), shape, head(), tail()
- index, column 정렬(sort)
- Boolean Indexing, isin색인(loc 활용)
- 결측값(Null) 알아보기
-df.copy : 그냥 바꿔서 df2 할당하면 기존의 df값도 수치가 계속 바뀜
-row, column 추가하기, 특정 row만 column 값 바꾸기)
-통계값(min, max, sum, mean, var, std ...)
-pivot_table
Import Pandas as pd
1) series
•pd.Series([1,2,3,4])
•a = [1,2,3,4]
pd.Series(a)
※ 똑같이 a라는 변수에 list를 할당한 다음, 각각 np.array와 pd.Series 지정해보기
단일 column을 Series라고 부르며, 앞의 숫자는 index number임
2) DataFrame
먼저 변수선언
company1 = [ ['삼성', 2000, '스마트폰'],
['현대', 1000, '자동차'],
['네이버', 500, '포털'] ]
pd.DataFrame(company1)
df1 = pd.DataFrame(company1) # 변수 지정해서 저장하기
2-1) 제목 column 추가하기
•df1 = pd.DataFrame(company1)
<방법1>: df.columns로 주기
df1.columns = ['기업명', '매출액', '업종'] **column 개수에 맞춰서 넣어줘야 오류가 나지 않음
<방법2>: dict로 주기
company2 = {'기업명' : ['삼성', '현대', '네이버'],
'매출액' : [2000, 1000, 500],
'업종' : ['스마트폰', '자동차', '포털']} **Dict 활용
**여기서 참고: Dict 문법
Mydict = dict()
Mydict
>> {}
Mydict['going'] = 'seventeen'
Mydict
>> {going : seventeen}
2-2) index로 특정 column을 지정하기
df1.index = df1['기업명']
3) 파일 불러오기 : csv, excel 등
• 로컬 파일에서 불러오기
• Google Drive에서 샘플 파일 읽어오기
• 파일 URL로부터 바로 읽어오기
• From google colab import drive
Drive.mount('/content/drive')
>> authorization
filename = '경로복붙'
pd.read_csv(filename)
• pd.read_csv('http://~')
※ excel은 pd.read_excel로만 바꿔서 똑같이
4) 통계값(describe), 요약정보(info), 정렬(sort)
df = pd.read_csv('http://~~')
4-1) 기본정보 출력
• 열 출력
df.columns
• 열 이름 재정의 **위의 column 이름 줄 때와 똑같음, 변수 지정만 한 번 더 해줌
new_col = [ 'name', '그룹', '소속사' ]
df.columns = new_col
• 행 출력
df.index
4-2) 요약정보(info) : df.info()
행의 정보와 데이터 타입을 알려준다.
주로 Nan 값과 데이터 타입을 볼 때 활용한다.
4-3) 통계값(describe) : df.describe()
통계정보 확인할 때 사용, 산술연산 할 수 있는 column만 출력하기 때문에 별로 안나온다.
(위의 float, in64만 산술연산 가능하므로 둘만 나옴)
4-4) 형태(shape) : df. shape
tuple 형태로 출력되며, 첫번째는 row 두번째는 column 갯수 출력
4-5) 상위, 하위 n개 정보 확인 : head, tail
df.head(), df.head(3)
df.tail(), df.tail(3)
4-6) 정렬(sort)
- Index 정렬
df.sort_index() / df.sort_index(ascending=false) **ascending = False 내림차순
- Column 정렬
df.sort_values('키') / df.sort_values(by='키')
df.sort_values('키', ascending=false)
ex) df.sort_values(by='키',ascending=False)
**(bonus) 복수정렬, 내림차순
df.sort_value(['키', '브랜드평판지수'], ascending=false)
1번으로 키를 가지고 정렬한 후, 2번으로 브랜드평판지수를 기준으로 내림차순으로 정렬해줌
5) Selection - columns
df['이름']
df["이름"]
df.이름
6) Selection - loc, iloc (범위선택)
6-1) Range selection
• 단순 index : df[:3] (3미만)
6-2) loc : numpy와 달리 n이상 m이하
자주쓰니까 숙지!
df.loc['행', '열']
df.loc[:, 'name']
df.loc[;, ['name', 'birth']] **쏙쏙 뽑아서 할 땐 리스트로 묶어줘라~
df.loc[2:5 ,'이름' : '생년월일'] **범위 출력도 가능~
6-3) iloc : i는 index, 번호로 가져오고 싶을 때. index와 column을 번호로 갖고 온다, numpy처럼 n:m이 n이상 m미만
df.iloc[:4, [0,2]]
7) Selection - Boolean Indexing (조건 selection)
true 값만 색인해냄, df[] 안에 조건을 넣으면 된다.
df[ df['키']<170]
출력값을 위해 df[df[컬럼]<조건] 해주는 것
but 보기불편함(모든 컬럼이 출력됨)
7-1) 특정 column만 출력하여 Boolean Indexing 하기
• 뒤에 출력할 columns 붙여주기
df[ df['키']<170]['이름']
df[ df['키']<170][['이름', '키']]
• loc 활용하기
df.loc[ df['키'<170], '이름']
index condition
7-2) isin 색인 : '컬럼' 안 값 중 '조건'에 해당하는 값이 있는지 색출
My_condition = ['플레디스', 'SM']
df['소속사'].Isin(my_condition)
'소속사'라는 column의 값들 중 my_condition에 해당하는 값이 있는가?
>> true/false 값으로 출력됨(boolean indexing이니까)
df.loc[df['소속사'].isin(my_condition)] **df.loc[조건]
df.loc[df['소속사'].isin(my_condition), '소속사'] **단일 column만 series로 출력
cf) 조건에 해당하는 값 필터링하는 두번째 방법: 변수에 아예 조건문을 할당해서 loc부분에 변수만 넣기
my_condition = (df['소속사'] == '플레디스')
df.loc[my_condition]
8) 결측값 색인 : isnull, isna, notnull
8-1) Boolean indexing으로 다루기: df.isna()
is na? 빠진 값이냐고 묻는것
true값 return 될 경우 NaN값인 것
df.isna(): 전부 출력되어서 보기 힘들다는 단점)
8-2) isnull
df['그룹'].isnull()
'그룹' column에 대하여 NaN값 확인
df.isnull도 됨
8-3) NaN값만 색출: isna, isnull 활용
df['그룹'][df['그룹'].isnull()] df[컬럼][df['컬럼'.isnull()]
df['그룹'][df['그룹'].isna()]
df[ df['그룹'].isnull()]['그룹']
df[ df['그룹'].isna()]['그룹']
8-4) NaN값이 아닌 값 색출: notnull()
df['그룹'][df['그룹'].notnull()]
=df[ df['그룹'].notnull()]['그룹']
= df.loc[ df['그룹'].notnull(), '그룹']
df.loc[df['그룹'].isnull(), '이름']
= df.loc[df['그룹'].isnull()]['이름']
9) Copy : df.copy0
new_df = df 후, new_df에서 처리했을 때 똑같이 df 성분 값도 바뀐다. df의 메모리를 new_df가 참조하기 때문
copy_df = df.copy() ** copy_df라는 새로 변수를 만든다.
10) row, column 추가, 삭제
• row의 추가 : append()
dict 형태로 각 column에 해당할 추가 값 적고, ignore_index=True
ex) df.append({'이름':'테디', '소속사':'YG'}, ignore_index=True)
• column의 추가 : df['새 컬럼명'] = '넣을 값'
df['국적']='대한민국'
하나의 컬럼이 생성되며 전체 값이 '넣을 값'으로 생성됨
• column 추가 후 특정 row의 column 값을 바꿀 때 : df.loc[]
df.loc[ df['이름'] = '지드래곤', '국적'] = 'korea'
→ df.loc[조건문, 'column 이름'] = '바꿀값'
11) 통계값(min, max, mean, vat, std, count, sum, median, mode)
산술적인 통계를 낼 수 있는 column에만 df.describe() 함수가 적용된다.
11-1) min, max
11-2) sum, mean
11-3) var(variation), std(standard deviation)
분산/표준편차: 데이터가 평균으로부터 얼마나 떨어져있는가
분산: {Σ(각 데이터 값 - 평균)^2}/n
표편: √분산
11-4) count, median
- count: row의 갯수 세기
- median: 오름차순으로 정렬한 다음 가운데 있는 값
11-5) mode: 최빈값
12) Pivot_table
=엑셀의 피벗테이블
데이터 열 중에서 두 개의 열을 각각 행 인덱스, 열 인덱스로 사용하여 데이터를 조회하고 펼쳐놓은 것
df가 아닌 pd를 받는다
pd.pivot_table(df, index='소속사', columns='혈액형', values='키')
처음에 df는 값을 가져올 변수, 그 안에서 가져올 행, 열, 값 차례대로 입력
데이터가 겹치는 경우 평균값이 출력되는데, sum을 활용하고 싶을 경우 aggfunc = np.sum을 붙임
'Data Science > coding pratice' 카테고리의 다른 글
Pandas 데이터 전처리 실습 (0) | 2022.05.17 |
---|---|
Numpy 03 (0) | 2022.05.01 |
Numpy (0) | 2022.04.22 |
pandas 복습 3 (0) | 2021.02.27 |
pandas 복습 2 (0) | 2021.02.24 |