일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mongoose create
- mongoose populate
- CSS
- javascript
- HTML
- res.status
- req.get
- promise
- css 기초
- mongoose find
- req.params
- mongoose update
- res.render
- req.body
- req.queries
- 파이썬
- 프론트엔드
- await
- Axios post
- async
- http
- res.set
- Axios put
- node.js란
- mongoose delete
- Axios get
- 웹개발
- 자바스크립트
- express 프로젝트 시작하기
- Axios delete
- Today
- Total
모스카토
Pandas 기초 본문
1. import
import pandas as pd
import numpy as np
보통 numpy를 pandas와 같이 import 한다.
2. float 데이터 range 정확하게 만들기
* 가끔씩 np.arange()를 이용해 float의 범위를 만들 때 0.00000000001 정도의 오차가 생길 때가 있다.
list(np.arange(f_start, f_end)/10)
f_start 에 시작할 float * 10 을 주고, 똑같이 f_end에 시작할 float * 10 을 준다.
np.arange()로 범위를 만든 후 /10을 해주면 np.arange의 미세한 오차를 수정할 수 있다.
3. DataFrame 생성
df = pd.DataFrame()
df = pd.DataFrame(columns = cols)
df = pd.DataFrame(data)
df = pd.DataFrame(data, columns = cols)
DataFrame을 생성하는 방법은 다양하다.
data : DataFrame으로 만들 데이터
cols : 컬럼명으로 사용할 데이터
컬럼만 넣어도 빈 DataFrame이 생성된다.
딕셔너리 형태의 데이터를 넣으면 키가 컬럼명으로, 값이 DataFrame으로 들어간다.
dic = {cols[i] : info_li[i] for i in range(len(cols))}
리스트 형태로 data와 cols가 있을 경우, 딕셔너리로 만들어서 DataFrame에 넣으면 편하다.
4. 컬럼 순서바꾸기
DataFrame에서 column 이름들을 리스트로 뽑아낸다.
cols = df.columns.tolist()
cols 를 원하는대로 변경 후 아래와 같이 df 변수에 다시 넣는다.
df = df[cols]
5. 데이터를 행으로 DataFrame에 입력하기 /
df = df.append(data, ignore_index=True)
DataFrame에 데이터를 추가할 때 ignore_index=True값을 주면 추가된 값들의 인덱스가 기존 인덱스와 자연스럽게 연결된다.
또 추가하려는 데이터와 기존 DataFrame의 컬럼 수가 달라도 빈 곳을 nan값으로 채우고 에러가 나지 않는다.
df.insert(loc, column, value)
loc 자리에 원하는 컬럼인덱스를 입력한다. column에는 컬럼명, value에는 값을 입력한다.
예를들어 (3, '컬럼명', '값') 을 입력하면 4번째 컬럼자리에 컬럼명과 값이 삽입되고 원래 4번째 컬럼부터 뒤로 밀린다.
insert는 inplace=True나 df=df.insert()를 하지 않아도 df자체가 변경된다.
6. 행이나 열 삭제하기
df.drop(index)
df.drop(column, axis=1)
행을 삭제할 경우 해당 index를 입력한다. axis의 기본값은 0이다.
열을 삭제할 경우 해당 column을 입력한다. axis=1을 준다.
df 변수에 다시 넣어야 삭제한 DataFrame이 유지된다.
7. loc 와 iloc
df.loc[1]
df.iloc[0]
df.loc[0, ['col1', 'col2']]
df.iloc[0, 2:4]
대괄호 안에 [행, 열]을 지정해서 데이터를 가져온다. 행만 줘도 된다.
loc는 행과 열의 인덱스(숫자)로는 데이터를 가져올 수 없다. 인덱스명과 컬럼명으로 데이터를 가져올 수 있다.
즉, 인덱스가 문자열일 경우 위 코드의 0자리에 해당 문자열을 넣어야 한다.
-> df.loc['인덱스', [ 'col1', 'col2' ] ]
iloc는 정수로 행, 열의 인덱스를 지정하여 데이터를 가져온다. 슬라이싱도 가능하다.
8. DataFrame 파일로 저장하기
df.to_csv( '경로/파일명', sep = '', encoding = '')
df = pd.read_csv( '경로/파일명', sep='', encoding='')
csv 외에도 다양한 파일형태로 저장할 수 있다. sep은 구분자, encoding은 인코딩방식을 주는 옵션이다. 필요에 따라 사용하고 생략해도 무방하다.
아래 코드는 csv로 저장한 파일을 다시 DataFrame으로 불러오는 것이다.
csv로 저장할 때 사용한 sep이 있다면 같은 sep으로 csv를 불러와야 DataFrame이 깨지지 않는다.
9. 참고
DataFrame을 변경한 후 변경사항을 유지하려면 아래와 같이 다시 저장하거나 inplace=True라는 값을 줘야한다.
df2 = df.copy()
df.drop(0, inplace=True)
하지만 위의 방법 없이 그냥 코드만 쳐도 df에 저장되는 경우가 있으니 주의해야 한다.