티스토리 뷰
728x90
이전 글 참조
[python, DataFrame]Mysql의 데이터로 Data Frame 형성
패키지(터미널에서 설치) pip install sqlalchemy pip install pymysql 데이터 베이스 접속 from sqlalchemy import create_engine database_connection = create_engine('데이터 베이스 접속 url') 데이터 베이스 접속 url은 데이터
growingegg.tistory.com
DataFrame 이름 변경
rename
- 인덱스 나 컬럼의 이름을 변경하고자 할 때 사용
- index 옵션에 디셔너리 형태로 {기존 인덱스: 새로운 인덱스,....} 설정하면 인덱스가 변경
- index의 변경은 메서드를 이용하지 않고 index 옵션에 list 나 Series 형태로 설정해도 가능
- columns 옵션에 디셔너리 형태로 {기존 컬럼 이름: 새로운 컬럼 이름,....} 설정하면 컬럼 이름이 변경
- inplace 옵션의 기본값은 False 인데 False 가 설정되면 복제본을 만들어서 리턴하고 True를 설정하면 원본이 변경
- rename 함수는 첫번째 매개변수로 변환 함수를 대입하고 두번째 옵션에 axis 에 index 나 columns를 설정해서 변환 함수를 이용해서 변경하는 것도 가능
실습
import pandas as pd
#item.csv의 파일 데이터를 가져와서 DataFrame 만들기
item = pd.read_csv("Downloads\data\data\item.csv")
print(item)
names = {"code":"코드", "manufacture": "원산지", "name":"이름", "price": "가격"}
#numpy나 pandas의 대다수 메서드는 원본을 변경하지 않고 수정해서 리턴
#pandas의 DataFrame에서는 inplace 옵션이 있는 경우 이 옵션에 True를 설정하면 원본을 수정
item.rename(columns=names, inplace=True)
print(item)
#결과
code manufacture name price
0 1 korea apple 1500
1 2 korea watermelon 15000
2 3 korea oriental melon 1000
3 4 philippines banana 500
4 5 korea lemon 1500
5 6 korea mango 700
코드 원산지 이름 가격
0 1 korea apple 1500
1 2 korea watermelon 15000
2 3 korea oriental melon 1000
3 4 philippines banana 500
4 5 korea lemon 1500
5 6 korea mango 700
인덱스 재구성
인덱스
- 행을 구별하기 위한 이름
- 데이터를 생성할 때 의미있는 이름을 인덱스로 설정하는 것을 권장
- 인덱스로 설정할 때 관계형 데이터베이스에서의 기본키처럼 데이터를 구별할 수 있는 값을 설정하는 것을 권장
- 인뎅스를 별도로 설정하지 않으면 일련번호의 형태로 부여
- 데이터 프레임을 생성할 때 index 옵션을 이용해서 지정이 가능
- reindex 속성을 이용해서 index를 재배치, 추가, 삭제가 가능
- set_index(열이름이나 열 이름 나열 ): 컬럼을 인덱스로 사용가능. 이때 해당 속성이 컬럼에서 제거된다.
- reset_index()를 호출하면 기본 인덱스가 제거되고 0부터 시작하는 일련번호로 다시 부여. 피벗의 형태를 만들거나 할 때 많이 이용
- index 속성을 이용해서 직접 지정하는 것 도 가능
데이터 삭제
Drop 메서드
- 행이나 열을 삭제하고자 하는 경우에 사용하는 메서드
- 인덱스나 컬럼이름을 하나 또는 list 형태로 대입하면 되는 데 axis 옵션에 0을 설정하면 행이 제거되고 1을 설정하면 열을 제거
- inplace 옵션이 존재
- 컬럼을 제거할 때 del DataFrame이름['컬럼 이름']으로도 제거 가능하지만 선호되지 않는다.
print(item)
#2행 삭제
print(item.drop([1], axis = 0))
#code 열 삭제
print(item.drop(['코드'], axis = 1))
#기본 테이블
코드 원산지 이름 가격
0 1 korea apple 1500
1 2 korea watermelon 15000
2 3 korea oriental melon 1000
3 4 philippines banana 500
4 5 korea lemon 1500
5 6 korea mango 700
#2행 삭제
코드 원산지 이름 가격
0 1 korea apple 1500
2 3 korea oriental melon 1000
3 4 philippines banana 500
4 5 korea lemon 1500
5 6 korea mango 700
# 코드 열 삭제
원산지 이름 가격
0 korea apple 1500
1 korea watermelon 15000
2 korea oriental melon 1000
3 philippines banana 500
4 korea lemon 1500
5 korea mango 700
데이터 수정 및 추가
- 컬럼 이름이나 인덱스는 유일해야 한다.
- DataFrame은 Dict처럼 동작
- DataFrame[컬럼 이름] = 데이터: 컬럼 수정 및 추가
- 하나의 값 또는 vector 데이터(list, ndarray, Series, dict)를 대입할 수 있다.
- DataFrame.loc[인덱스 이름] = 데이터: 행을 수정 및 추가. 인덱스 이름이 존재하지 않으면 추가. 존재하면 수정.
item = pd.read_csv("Downloads\data\data\item.csv")
print(item)
#컬럼 추가
item['description'] = '과일'
print(item)
#컬럼 수정
item['description'] = ['사과', '수박', '참외', '바나나', '레몬', '망고']
print(item)
#행 추가
item.loc[6] = [7, '한국', '무화과', 3000,'무화과']
print(item)
# 결과
code manufacture name price
0 1 korea apple 1500
1 2 korea watermelon 15000
2 3 korea oriental melon 1000
3 4 philippines banana 500
4 5 korea lemon 1500
5 6 korea mango 700
#컬럼 추가
code manufacture name price description
0 1 korea apple 1500 과일
1 2 korea watermelon 15000 과일
2 3 korea oriental melon 1000 과일
3 4 philippines banana 500 과일
4 5 korea lemon 1500 과일
5 6 korea mango 700 과일
#컬럼 수정
code manufacture name price description
0 1 korea apple 1500 사과
1 2 korea watermelon 15000 수박
2 3 korea oriental melon 1000 참외
3 4 philippines banana 500 바나나
4 5 korea lemon 1500 레몬
5 6 korea mango 700 망고
#행 추가
code manufacture name price description
0 1 korea apple 1500 사과
1 2 korea watermelon 15000 수박
2 3 korea oriental melon 1000 참외
3 4 philippines banana 500 바나나
4 5 korea lemon 1500 레몬
5 6 korea mango 700 망고
6 7 한국 무화과 3000 무화과
연산
전치 연산
- 행과 열을 바꾸는 연산
- T라는 속성을 이용할 수 있는 transpose라는 메서드를 이용할 수 있다.
- 데이터를 읽어왔을 때 방향이 맞지 않는 경우 사용
산술연산
- numpy와 동일한 방식으로 연산을 수행
- numpy는 위치 기반 연산 진행. Series나 DataFrame은 인덱스 기반 연산을 수행.
- 한 쪽에만 존재하는 인덱스의 경우 NaN으로 결과를 출력
- 산술 연산자를 사용하거나 add, sub, div, mul 메서드를 사용할 수 있다. 메서드를 사용하면 fill_method 나중에 추가
item1 = {
"1": {"price": 1000},
"2": {"price": 2000}
}
item2 = {
"1": {"price": 1000},
"3": {"price": 3000}
}
#데이터 원본
print(item1)
print(item2)
#전치
df1 = pd.DataFrame(item1).T
df2 = pd.DataFrame(item2).T
print(df1)
print(df2)
#산술 연산
print(df1 + df2)
{'1': {'price': 1000}, '2': {'price': 2000}}
{'1': {'price': 1000}, '3': {'price': 3000}}
price
1 1000
2 2000
price
1 1000
3 3000
# 산술 연산
price
1 2000.0
2 NaN
3 NaN
기본 통계 함수
- count, min, max, sum, mean, median, mode(최빈값)
- var, std, kurt, skew, sem: 분산, 표준 편차, 첨도, 왜도, 평균의 표준 오차
- argmin, argmax, idxmin, idxmax
- quantile: 4분위수
- describe: 기술 통계 정보 요약
- cumsum, cummin, cummax, cumprod: 누적합, 누적 최소, 누적 최대, 누적 곱
- diff: 산술적인 차이
- pct_change: 이전 데이터와의 백분율
- unique(): Series에서만 사용 가능. 동일한 값을 제외한 데이터의 배열을 리턴. skipna 옵션을 통해 NaN 값을 제거할 수 있다.
상관 관계 파악
- 상관 관계: 2개의 데이터가 얼마나 상호 의존적인지를 나타내는 것. 한 개 데이터 값의 변화가 다른 데이터 값의 변화에 미치는 영향을 나타낸다.
- conv(): 공분산. 거리의 제곱
- corr(): 상관 계수. 공분산과 데이터 스케일을 맞추지 않고 모든 값이 동일한 스케일을 갖도록 값을 수정한다. -1 ~ 1이 되도록 수정. 절대값 1에 가까워지면 상관 관계가 높다고 하고 0에 가까워질수록 상관 관계가 낮다. 상관 계수가 데이터의 관계 전부를 표현하지는 않는다.
정렬
- sort_index(): 인덱스를 기준으로 정렬. 오름차순이 기본. 내림차순으로 정렬할 경우 ascending = False 설정을 하면 된다.
- sort_values(by=열 이름 또는 열 이름의 list, ascending=bool 또는 bool의 list): 컬럼의 값을 기준으로 정렬
순위
- rank 함수 사용
- 기본적으로 오름차순으로 순위 설정
- ascending = False로 내림차순
- axis를 이용해서 행이나 열 단위 설정
- 동일한 점수가 있는 경우 순위의 평균을 리턴. method 옵션에 max, min, first를 설정해서 동일한 점수를 처리하는 것이 가능
- 순위는 컬럼 단위로 연산을 수행
728x90
'python' 카테고리의 다른 글
[pandas]AttributeError: 'DataFrame' object has no attribute 'append' 오류 해결 방법 (0) | 2024.04.14 |
---|---|
[python, DataFrame]데이터 탐색 (1) | 2024.02.13 |
[python, DataFrame]Mysql의 데이터로 Data Frame 형성 (0) | 2024.02.13 |
[python] selenium (0) | 2024.02.13 |
[python] 데이터 수집 (1) | 2024.02.13 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 웹개발
- 오블완
- 인프런강의후기
- 위니브엠베서더
- ssafy기자단
- 파이썬
- 제주코딩베이스캠프
- 알고리즘
- Python
- 생성형 AI
- 위니브
- 프로그래머스
- dataframe
- 백준
- 티스토리챌린지
- numpy
- 더오름
- 백준알고리즘
- 코딩테스트
- PANDAS
- SSAFY
- 웹프로그래밍
- 인프런강의
- django
- 알고리즘이론
- it도서큐레이션
- 인프런
- SSAFYcial
- 전자회로
- 웹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
250x250