일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 전처리
- Oracle
- 데이터리안 웨비나
- MySQL
- not in
- airflow.cfg
- solvesql
- having
- 데이터분석
- pandas
- 결측값
- 그로스해킹
- join
- 머신러닝
- SUM
- hackerrank
- seaborn
- 다중 JOIN
- SQL
- PostgreSQL
- 파이썬
- matplotlib
- GROUPBY
- Round
- 데이터시각화
- Limit
- 프로그래머스
- SQLite
- TRUNCATE
- airflow 설치
Archives
- Today
- Total
Milky's note
[Part 1] Pandas(기본 설명) 본문
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