반응형
판다스에서 행이나 열을 선택하는 방법
데이터는 기상자료개방포털에서 서울시 기후 데이터를 다운받아
data.csv로 파일명을 바꾸고 해당 소스가 있는 폴더에 넣어 사용
pandas의 read_csv("파일명.csv") csv파일에서 데이터를 가져와 DataFrame을 반환한다.
인코딩 형식의 오류가 발생했을 때는 encoding 인자에 인코딩 형식을 넣어준다.
우리나라 공기관에서 데이터를 받아 저장했을 경우 인코딩 형식이 "CP949" 일 수 있다.
import pandas as pd
df = pd.read_csv("./data.csv", encoding='utf-8')
df.head()
지점번호 지점명 일시 평균기온 평균최고기온 최고기온 최고기온일자 평균최저기온 최저기온 최저기온일자
0 108 서울 09-Jan -2.0 2.3 12.2 2009-01-30 -5.5 -11.4 2009-01-24
1 108 서울 09-Feb 2.9 6.8 16.1 2009-02-13 -0.6 -8.6 2009-02-17
2 108 서울 09-Mar 6.0 10.6 22.2 2009-03-21 1.8 -3.3 2009-03-14
3 108 서울 09-Apr 12.7 18.0 25.8 2009-04-19 8.1 2.2 2009-04-01
4 108 서울 09-May 19.1 24.3 31.0 2009-05-28 14.6 9.8 2009-05-05
head(숫자) 위에서부터 "숫자" 만큼의 데이터만 출력해준다.
숫자를 넣지 않으면 기본 5개 출력
df.column명 으로 해당 column만 가져올 수 있다.
df.평균기온.head(3)
0 -2.0
1 2.9
2 6.0
Name: 평균기온, dtype: float64
딕셔너리같이 키값으로 가져올수도 있으며 여러개를 지정할 때는 반드시 대괄호 2개 사용
df[["지점명","일시","평균기온"]].head()
지점명 일시 평균기온
0 서울 09-Jan -2.0
1 서울 09-Feb 2.9
2 서울 09-Mar 6.0
3 서울 09-Apr 12.7
4 서울 09-May 19.1
다음과 같이 데이터의 row 갯수를 선택할 수 있다.
df[["지점명","일시","평균기온"]][:5]
지점명 일시 평균기온
0 서울 09-Jan -2.0
1 서울 09-Feb 2.9
2 서울 09-Mar 6.0
3 서울 09-Apr 12.7
4 서울 09-May 19.1
넘파이를 근간으로 하기 때문에 넘파이에서 사용하는 형식을 다 사용할 수 있다.
df[0:3]
지점번호 지점명 일시 평균기온 평균최고기온 최고기온 최고기온일자 평균최저기온 최저기온 최저기온일자
0 108 서울 09-Jan -2.0 2.3 12.2 2009-01-30 -5.5 -11.4 2009-01-24
1 108 서울 09-Feb 2.9 6.8 16.1 2009-02-13 -0.6 -8.6 2009-02-17
2 108 서울 09-Mar 6.0 10.6 22.2 2009-03-21 1.8 -3.3 2009-03-14
iloc을 사용하면 지정한 범위의 row 를 가져올 수 있다.
df.iloc[0:3]
지점번호 지점명 일시 평균기온 평균최고기온 최고기온 최고기온일자 평균최저기온 최저기온 최저기온일자
0 108 서울 09-Jan -2.0 2.3 12.2 2009-01-30 -5.5 -11.4 2009-01-24
1 108 서울 09-Feb 2.9 6.8 16.1 2009-02-13 -0.6 -8.6 2009-02-17
2 108 서울 09-Mar 6.0 10.6 22.2 2009-03-21 1.8 -3.3 2009-03-14
df.iloc[row범위 : column범위]로 지정할 수도 있다.
df.iloc[0:5,1:4]
지점명 일시 평균기온
0 서울 09-Jan -2.0
1 서울 09-Feb 2.9
2 서울 09-Mar 6.0
3 서울 09-Apr 12.7
4 서울 09-May 19.1
특정 조건을 주고 선택할 수 있다.
데이터프레임 역시 넘파이에서 사용하는 방식을 동일하게 사용가능하다.
df[df["최고기온"]>20].head()
지점번호 지점명 일시 평균기온 평균최고기온 최고기온 최고기온일자 평균최저기온 최저기온 최저기온일자
2 108 서울 09-Mar 6.0 10.6 22.2 2009-03-21 1.8 -3.3 2009-03-14
3 108 서울 09-Apr 12.7 18.0 25.8 2009-04-19 8.1 2.2 2009-04-01
4 108 서울 09-May 19.1 24.3 31.0 2009-05-28 14.6 9.8 2009-05-05
5 108 서울 09-Jun 22.4 26.7 32.4 2009-06-27 18.8 14.3 2009-06-01
6 108 서울 09-Jul 24.3 28.2 32.4 2009-07-16 21.0 18.7 2009-07-10
drop()은 데이터프레임에서 데이터를 제거
완전히 제거하는 것은 아니고 원본은 그대로두고 제거한 데이터프레임을 반환한다.
df.drop(1).head()
지점번호 지점명 일시 평균기온 평균최고기온 최고기온 최고기온일자 평균최저기온 최저기온 최저기온일자
0 108 서울 09-Jan -2.0 2.3 12.2 2009-01-30 -5.5 -11.4 2009-01-24
2 108 서울 09-Mar 6.0 10.6 22.2 2009-03-21 1.8 -3.3 2009-03-14
3 108 서울 09-Apr 12.7 18.0 25.8 2009-04-19 8.1 2.2 2009-04-01
4 108 서울 09-May 19.1 24.3 31.0 2009-05-28 14.6 9.8 2009-05-05
5 108 서울 09-Jun 22.4 26.7 32.4 2009-06-27 18.8 14.3 2009-06-01
column명을 사용하여 제거할 수도 있고, 이때 axis=1 을 꼭지정해야 한다.
따지면 골치아프니 그냥 axis=1 지정..ㅜㅜ
여러개를 한꺼번에 지정해서 제거하려면 리스트를 넣는다.
df.drop(["지점명","일시","평균기온"], axis=1).head()
df.drop("지점명", axis=1).head()
지점번호 일시 평균기온 평균최고기온 최고기온 최고기온일자 평균최저기온 최저기온 최저기온일자
0 108 09-Jan -2.0 2.3 12.2 2009-01-30 -5.5 -11.4 2009-01-24
1 108 09-Feb 2.9 6.8 16.1 2009-02-13 -0.6 -8.6 2009-02-17
2 108 09-Mar 6.0 10.6 22.2 2009-03-21 1.8 -3.3 2009-03-14
3 108 09-Apr 12.7 18.0 25.8 2009-04-19 8.1 2.2 2009-04-01
4 108 09-May 19.1 24.3 31.0 2009-05-28 14.6 9.8 2009-05-05
반응형
'파이썬 > Pandas' 카테고리의 다른 글
Pandas 시리즈 series 생성 및 기본 (0) | 2019.08.09 |
---|
댓글