서울시 CCTV 현황 데이터 분석(1)
.
: 현재 폴더에서, ..
: 상위 폴더에서 실행import pandas as pd
pd.function #사용
python
,pandas
: 데이터 확보, 정리, 정렬matplotlib
: 그래프 그리기- regression using
numpy
: 전체적인 경향 파악- insight and visualization: 경향에서 벗어난 데이터 강조
![]() |
---|
data = pd.read_csv("경로", encoding="utf-8")
CCTV_Seoul.columns
# 데이터의 columns[0]의 이름 바꾸기
CCTV_Seoul.rename(columns={CCTV_Seoul.columns[0]: "구별"})
# 원본 바꾸기
CCTV_Seoul.rename(columns={CCTV_Seoul.columns[0]: "구별"}, inplace=True)
# 두 번째 header부터, 사용하는 column: B, D, G, J, N
pop_Seoul = pd.read_excel("../data/Seoul_Population.xls", header=2, usecols="B, D, G, J, N")
# 가독성 있는 작성법 - 예시1
pop_Seoul = pd.read_excel(
"../data/Seoul_Population.xls", header=2, usecols="B, D, G, J, N"
)
# 가독성 있는 작성법 - 예시2
pop_Seoul.rename(
columns={
pop_Seoul.columns[0]: "구별",
pop_Seoul.columns[1]: "인구수",
pop_Seoul.columns[2]: "한국인",
pop_Seoul.columns[3]: "외국인",
pop_Seoul.columns[4]: "고령자",
},
inplace=True
)
header
usecols
import pandas as pd
import numpy as np # numpy: 수치해석적 함수가 많음.
- index와 value로 이루어져 있습니다.
- 한 가지 데이터 타입만 가질 수 있습니다.
- Pandas의 데이터형을 구성하는 기본: Series
- 공식 문서 Series 설명: https://pandas.pydata.org/docs/reference/api/pandas.Series.html
pd.Series()
>>>
Series([], dtype: object)
# object: pandas에서 사용하는 문자열 데이터(=python에서 string)
pd.Series([1, 2, 3, 4], dtype=np.float64)
>>>
0 1.0
1 2.0
2 3.0
3 4.0
dtype: float64
pd.Series(np.array([1, 2, 3]))
>>>
0 1
1 2
2 3
dtype: int32
pd.Series({"Key": "Value"})
>>>
Key Value
dtype: object
pd.date_range("20210101", periods=6)
# periods: 기간
Series
data type이 모여DataFrame
data type 이룸.pd.Series()
: index, valuepd.DataFrame()
: index, value, columndf = pd.DataFrame(data, index, columns)
df.head(n)
: 상위 n개 데이터 (default=5)df.tail(n)
: 하위 n개 데이터 (default=5)df.index
: index 값 리스트 형태로 반환df.columns
, df.values
df.info()
: 데이터 프레임의 기본 정보 확인df.describe()
: 데이터 프레임의 통계 정보 확인
sort_values()
- 특정 컬럼(열)을 기준으로 데이터를 정렬
# B기준 오름차순 정렬 df.sort_values(by="B") # B기준 내림차순 정렬 df.sort_values(by="B", ascending=False) # 원본에 저장 df.sort_values(by="B", ascending=False, inplace=True)
# 한 개 컬럼 선택
df["A"]
df.A # 컬럼명이 문자열인 경우
# 두 개 이상 컬럼 선택
df[["A", "B"]]
[n:m]
: n부터 m-1 까지loc
(location) : index 이름으로 특정 행, 열을 선택.iloc
(inter location) : 컴퓨터가 인식하는 인덱스 값으로 선택df.loc[:, ["A", "B"]] # index는 전부, column은 A, B 만 가져오기
df.loc["20210102":"20210104", "A":"D"] # index는 20210102 ~ 20210104, column은 A ~ D
# A 컬럼에서 0보다 큰 숫자(양수)만 선택
df["A"] > 0
# 마스킹: 전체 DataFrame 에서 A column 이 0보다 큰 것
df[df["A"]>0]
# 전체 data 중 0보다 큰 것
df[df > 0]
NaN
: Not a Number, 데이터 없음df["새로운 column name"] = ["value1", "value1"...]
기존 컬럼이 없으면 추가, 기존 컬럼이 있으면 수정
isin()
: 특정 요소가 있는지 확인, bool 반환
df["E"].isin(["two", "five"])
# 마스킹
df[df["E"].isin(["two", "five"])]
del
, drop
del df["E"]
df.drop(["D"], axis=1) # axis=0 가로, axis=1 세로
df.apply(적용할 함수 이름)
df["A"].apply("sum") # sum, mean, min, max, np.sum, np.std ...