장점: 띄어쓰기 등 직접 타이핑보다 실수를 줄일 수 있음
file_paths = glob("data/apt*.csv")
file_paths
glob("seoul*.csv")
연도, 퇴원현황 두 개의 변수에 대한 빈도 비율 구하기
pd.crosstab(df.연도, df.퇴원현황, normalize=True)*100
df["거주구"] = df["거주구"].str.strip()
gu_ym.style.background_gradient(#컬러옵션 cmap="")
plt.colormaps()
gu_month.T 로 행과 열을 바꾼 뒤에 보기: 전치행렬 ]
gu_ym.T.style.background_gradient(cmap="twilight")
df[df["거주구"]=="강남구"][["확진일","접촉력"]]
df.loc[df["거주구"]=="강남구", ["확진일","접촉력"]]
loc: 인덱스의 데이터값을 기준으로 데이터를 출력
iloc: 인덱스의 위치로 데이터를 출력
"골목 떡볶이" , "로데오거리 18-1"
count: NA가 아닌 데이터의 개수 세기
value_counts : 컬럼의 각 값에 대한 모든 발생 횟수를 반환 (빈도 수가 높은 순으로 정렬)
sort_index() : 인덱스 순으로 정렬
"접촉력대문자" 컬럼으로 PC방 데이터를 찾고 접촉력 컬럼에 대해서만 빈도수 구하기
df["접촉력대문자"].str.contains("PC").value_counts()
df.loc[df["접촉력"].str.contains("해외유입"), "해외유입"] = "해외"
df.loc[~df["접촉력"].str.contains("해외유입"), "해외유입"] = "국내"
해당 위치에, 값 할당하기
"거주구"가 "강남구", "서초구", "송파구" 인 데이터만 찾기
loc를 통해 해당 조건의 "접촉력" 컬럼만 가져오기
df[df["거주구"].isin(["강남구","서초구","송파구"])].loc[:,"접촉력"]
stacked=True 로 두 가지를 함께 그립니다
gu_oversea.iloc[:,:2].plot(kind="bar",stacked=True,figsize=(12,3))
pd.pivot_table(data=df,
index="거주구",
columns="해외유입",
values="환자", aggfunc="count") # 인덱싱 안해도 values옵션 쓸 수 있음, # count 빈도수
weekday_list = list("월화수목금토일")
gu_weekday = pd.pivot_table(data=df,
index="거주구",
columns="요일명",
# values="환자",
aggfunc="count")["환자"]
gu_weekday = gu_weekday[weekday_list]
gu_weekday.head()
crosstab보다 groupby를 알면 더 다양한 연산을 할 수 있다!
"거주구", "해외유입" 으로 그룹화 하여 "환자" 컬럼으로 빈도수 구하기
df.groupby(by=["거주구","해외유입"])["환자"].count()
환자라는 유일값을 기준으로 count값을 세자!
"거주구", "해외유입" 으로 그룹화 하여 "환자" 컬럼으로 빈도수 구하고
마지막 인덱스를 컬럼으로 만들기
df.groupby(by=["거주구","해외유입"])["환자"].count().unstack(level=-1) # 기본값
["연도", "월"] 로 그룹화 하고 "해외유입" 의 describe 값 보기
df.groupby(by = ["연도","월"])["해외유입"].describe()
df.filter()
방대한 양의 데이터에서 특정 변수만 가져올 때 사용
iat, it (없어질 메소드)
df.any() df.all()
정규표현식
'\': 문자 그대로 인식을 해달라
'length$' : 로 끝나는 단어
'^Sepal' : 로 시작하는 단어
cumsum() : 누적합
rank()
cut qcut
merge
isin
query
drop
deck : 선실 고유 번호 가장 앞자리 알파벳
embarked : 탑승 항구
sibsp : 형제자매+배우자 인원수
pclass : 좌석등급 (숫자)
parch : 부모+자식 인원수
class : 좌석등급 (영문)
who : 성별
embarked_lower열에서 south가 들어가는 데이터의 수
df["embark_lower"].str.contains("south").sum()
df.loc[조건, 컬럼] : loc 사용법
df[df["pclass"]==1]["fare"].median() # 인덱싱으로 추출
df.loc[df["pclass"] == 1, "fare"].median # loc로 추출
쉽게 큰 값 순으로 추출
df["age"].sort_values(ascending=False).head(5)
df["age"].nlargest(10)
melt : tidy data (깔끔한 데이터) 만들기
file_paths = glob("data/apt*.csv")
file_paths
df_last = pd.read_csv(file_paths[1], encoding="cp949")
df_last
isnull 을 통해 결측치를 구합니다.
df_last.isnull().sum()
isna 를 통해 결측치를 구합니다.
df_last.isna().mean()*100
sns.heatmap(df_last.isnull(), cmap="gray")
df_last["분양가격"] = pd.to_numeric(df_last["분양가격"], errors='coerce')
강제로 에러를 숫자로 바꿔달라
errors='raise' : 에러를 반환
errors='coerce'에러가 아니라, 강제로 바꿔라
errors='ignore'인풋 값으로 반환
가끔 빨간색 에러 -> 미래에는 ~이러이러하게 바뀔거니 미리 조심해라. 그치만 지금은 잘 돌아간다.
df_last["전용면적"] = df_last["규모구분"].str.replace("전용면적|제곱미터이하","",regex=True)
df_last["전용면적"] = df_last["전용면적"].str.replace("제곱미터초과","~")
df_last["전용면적"] = df_last["전용면적"].str.replace(" ","")
df_last["전용면적"]
df.hist()
sns.pairplot(df,* hue=)
df_last["분양가격"].str.replace("[^0-9]", "", regex=True)
^ (캐럿) : 반대를 의미