학습 목표
- 원하는 데이터를 조건을 활용하여 불러온다.
핵심 키워드
- ==
- loc
- boolean indexing
- True / False
- &, |
학습하기
학습 목표
- 원하는 데이터를 조건을 활용하여 불러온다.
핵심 키워드
- ==
- loc
- boolean indexing
- True / False
- &, |
학습하기
학습 내용
== 활용하기
df["상권업종중분류명"] == "약국/한약방"
상권업종중분류명이 약국/한약방인지를 확인합니다.
결과 :
df[df["상권업종중분류명"] == "약국/한약방"]
df["상권업종중분류명"] == "약국/한약방"에 df[]을 덮어쓰면 해당 조건에 True인 데이터만 가져옵니다.
df_medical = df[df["상권업종중분류명"] == "약국/한약방"].copy()
다른 목적으로 사용한다면 copy()를 해야 warning이 뜨지 않거나 원본에 영향을 미치지 않습니다. 그리고 이 데이터를 df_medical이라는 변수에 넣습니다.
2개의 조건 사용하기
df[df["상권업종대분류명"] == "의료"]]
이번에도 상권업종대분류명이 의료인 데이터를 불러옵니다.
결과 :
이제 2개의 조건을 사용해봅니다.
df.loc[df["상권업종대분류명"] == "의료"]["상권업종중분류명"]
상권업종대분류명이 의료인 데이터의 상권업종중분류명을 가져오고 싶을 때 loc를 함께 사용합니다.
결과 :
df.loc[df["상권업종대분류명"] == "의료", "상권업종중분류명"]
이 소스는 위와 같은 결과를 출력합니다. 그런데 첫번째 방법은 의료로 검색하고, 또 상권업종중분류명에 검색하므로 속도가 느립니다. 따라서 이 방법을 권장합니다.
결과 :
조건에 맞는 데이터 개수 세기
df.loc[df["상권업종대분류명"] == "의료", "상권업종중분류명"].value_counts()
value_counts로 데이터의 갯수를 셀 수도 있습니다.
결과 :
m = df["상권업종대분류명"] == "의료"
df.loc[m, "상권업종중분류명"].value_counts()
boolean indexing을 해서 다음과 같이 코드를 작성할 수도 있습니다. 위와 결과는 같습니다.
결과 :
유사의료업 색인하기
df["상권업종중분류명"] == "유사의료업"
상권업종중분류명이 유사의료업인 데이터인지 체크합니다.
결과 :
df[df["상권업종중분류명"] == "유사의료업"]
상권업종중분류명이 유사의료업인 데이터만 불러옵니다.
결과 :
df[df["상권업종중분류명"] == "유사의료업"].shape
데이터의 크기, 즉 행과 열의 수를 확인합니다.
결과 :
df["상호명"].value_counts().tail()
데이터를 뒤에서부터 5개를 봅니다.
결과 :
df_medi["상호명"].value_counts().head(10)
상호명의 데이터 당 갯수를 세고, 10개를 출력합니다.
결과 :
여러 조건으로 색인하기
df["상권업종소분류명"] == "약국"
상권업종소분류명이 약국인지 확인합니다.
결과 :
df["시도명"] == "서울특별시"
시도명이 서울특별시인지 확인합니다.
결과 :
위 2가지 조건을 동시에 쓰고 싶을 때는 and나 or을 사용합니다.
and는 두 조건이 모두 True여야 True를 출력하고, or은 두 조건 중 하나만 True여도 True를 출력합니다.
True and True => True
True and False => False
True or True => True
True or False => True
(df["상권업종소분류명"] == "약국") & (df["시도명"] == "서울특별시")
연산자 우선순위에 의해 각 조건에 ()를 걸어줍니다. and는 &, or은 |를 사용하여 조건을 정해줍니다.
결과 :
df_seoul_drug = (df["상권업종소분류명"] == "약국") & (df["시도명"] == "서울특별시")
print(df_seoul_drug.shape)
df_seoul_drug
Jupyter notebook은 가장 마지막에 있는 데이터만 출력합니다!
결과 :
comment
저는 영상처럼 0부터 순차적으로 출력되지않고
0부터 출력되다가 ... 표시 이후 91330 열로 출력이 되는데 해결방법좀 알려주실수있을까요??
지번주소 중 원하는 텍스트가 들어간 데이터만 추출하는 방법이 있을까요?
여러조건 색인하기 파트에서 약국이면서 서울특별시인 조건을 찾는 것에 질문 있습니다.
이렇게 사용하라고 안내해주셨는데, 제가 생각했을 땐 데이터프레임에 두번 접근하는 것처럼 보입니다.
한번만 접근할 수 있는 방법은 없나요?
df[df['상권업종대분류명'] == '의료']['상권업종중분류명']
이렇게 썼을 때 왜 '상권업종중분류명'이 보여지는건가요?
감사합니다.
df_seoul_drug = df[(df["상권업종소분류명"] == "약국") & (df["시도명"] == "서울특별시")]
print(df_seoul_drug.shape)
df_seoul_drug
df[]가 빠져 있어욥 :)
좋은 강의 잘듣고 있습니다. 감사합니다.
선생님 ~~ 너무 잘 보고 있습니다 . 핵심 콕콕~ 감사합니다!