데이터 타입이 하나라도 바뀌면 전체 serise 의 타입도 바뀐다.
axis 0:행, 1:컬럼을 의미합니다.
df = df.drop("종류2", axis=1) #종류2 컬럼을 지우겠다는 의미
method traning 할 때 잘 동작하지 않기 때문이다.
df.shape
df의 프레임 크기를 출력한다.
(8,4) 와 같은 형태로 출력되는데
해당 값은 변하지 않을거기 때문에 튜플로 반환된다.
df.describe
기술 통계값을 보여준다.
df["가격"] #이런식으로 dictionary와 사용법이 같다.
df[["가격", "약품명"]] #여러 컬럼을 가지고 오고 싶다면 이렇게 묶어준다.
df.loc[1] #loc 는 locate 라는 의미이다. 인덱스 값으로 가져온다.
df.loc[[0, 2, 5]]
iloc[0]
iloc[0:5]
#인덱스 순서상에 맞게 가져 오는 방법
loc["소화제"]
#인덱스를 가져오는 방법
df.loc[5:6]
df.set_index("약품명")
이렇게 하면 "약품명"을 index 를 지정할 수 있다.
set_index에는 컬럼명만 넣을 수 있다.
set_index는 dataFrame내의 열을 이용한 인덱스를 설정하는 함수이다.
유니크값이 아니더라도 인덱스로 지정 할 수 있다.
df.index
#인덱스를 확인하는 방법
#인덱스를 되돌리는 방법
df = df.reset\_index()
#여러번 실행하면 여러개의 인덱스가 생긴다.
컬럼을 지울 때 파이썬의 라이브러리 기능으로도 지울 수 있다.
del df["index"]
판다스에서 제공하는 기능을 사용 할 때는 drop
df = df.drop("index", axis=1)
df.iloc[0,0]
df.iloc[:2, :2]
df.loc[0,"약품명"]
df.loc[[0,2,5], "약품명"]
df.loc[[0, 2, 5], ["약품명", "가격"]]
df.loc[5:6, ["약품명", "가격"]]
판다스에서 인덱스를 True False 로 만들어서 가져오는 방법
df[df["약품명_소문자"].str.contains("vita|비타")]
df[df["가격"] >= 3000]
구현되어있는 함수를 확인해보자
dir("약품명")[-10:]
시리즈 접근자(판다스에서 Series에서 제공하는)
https://pandas.pydata.org/docs/reference/series.html#api-series-str
| 이건 파이프라고 부르는데 or 를 의미한다.
& 이건 엔퍼센트라고 부르는데 and 를 의미한다.
정렬하기
sort_values
df.sort_values?
이런식으로 문서를 확인하는 습관을 갖자
df.sort_values(by="가격", ascending=False)
#오름차순으로 정렬한다.
df.sort_values(by=["가격", "약품명"], ascending=[False, True])
#여러 컬럼으로 정렬할 수 있다. 컬럼별로도 오름차순이나 내림차순을 정리 할 수 있다.
dataFrame을 파일로 저장할 때
df.to_csv("drug.csv", index=False)
저장된 파일을 불러올 때
pd.read_csv("drug.csv")
한글 인코딩 하려면 이렇게 해주면 된다.
encoding="cp949"
df.columns = ['약품명', '가격', '세금', '지역', '종류', '약품명_소문자_1']
컬럼의 갯수와 같아야 한다.
https://ko.wikipedia.org/wiki/%EC%95%A4%EC%8A%A4%EC%BB%B4_%EC%BD%B0%EB%A5%B4%ED%85%9F
: 기술통계량은 유사하지만 분포나 그래프는 매우 다른 4개의 데이터셋이다
데이터 시각화가 중요하다.
기술통계량은 거의 동일 하더라도 시각화 해보면 완전히 다르게 나타날 수도 있다.
seaborn : 파이썬 데이터 시각화 도구
https://seaborn.pydata.org/examples/anscombes_quartet.html
import seaborn as sns
seaborn 깃헙에 있는 데이터를 가져와서 사용 할 수 있다.
https://github.com/mwaskom/seaborn-data
sns.load_dataset("anscombe")
pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/anscombe.csv")
동일한 역할을 한다.
df.head() # 위에서 다섯개
df.tail() #아래에서 다섯개
이렇게 숫자를 지정 할 수 있다.
df.head(2)
df.tail(2)
df.iloc[:5, :3]
df.loc[:5, "x":"y"]
df.sample #랜덤하게 가지고 온다.
df.sample(3) #갯수를 정 할 수도 있다.
df.sample(frac=0.05, random_state=42)
#frac = 비율
# random_state = random의 seed 값? 랜덤값을 고정시키는 역할만 한다.
df.info()
df.describe() #숫자
df.describe(include="object") #객체
df["dataset"].unique() #해당 컬럼의 unique 값을 알 수 있다.
#bool Indexing dataFrame
df_1 = df[df["dataset"] =="I"]
df_1.corr
상관계수
1의 가까운 값이면 y=x 그래프
df_1.corr()
df["dataset"].value_counts()
df["dataset"].value_counts(normalize=True) #이거는 비율로 구하기
df.groupby("dataset")[["x", "y"]].describe()
df.groupby("dataset").describe()
df.groupby("dataset").corr()
막대 그래프는 범주형 데이터에 대해서 수치값을 표시 할 때 사용한다.
그래프는 수직이나 수평으로 그려볼 수 있다.
막대그래프의 단점
https://www.hira.or.kr/ebooksc/ebook_659/ebook_659_202109300534201190.pdf
(다들 이걸 어떻게 잘 알지!?!? 난 둘다 틀림ㅜ)
dataset 은 질적 자료에 순서 자료이다.
x,y 는 양적자료의 연속자료이다.
relplot : 두 가지 변수의 관계를 나타내기 위해 주로 사용
displot : 변수 하나 혹은 두개의 값 분포를 나타내기 위해 주로 사용
catplot : 범주형 변수와 연속형 변수간의 관계를 나타내기 위해 주로 사용
참고
https://www.autodesk.com/research/publications/same-stats-different-graphs
박스플롯의 단점은?
4분위 값이 변하지 않으면 데이터의 변화가 드러나지 않는다.
\=로보스터하다.
kde - 밀도를 추정한것, 히스토그램을 부드러운 곡선을 표현한 것