본문 바로가기

판다스/판다스 팁50

[pandas] 일부만 %로 표기된 열을 float으로 바꿀 때 아래 시리즈 s는 일부만 %로 표기되어 있고 %로 표기된 부분은 문자열이 된다 import pandas as pd s = pd.Series(['1', 2, '300%']) s 0 1 1 2 2 300% dtype: object 이 s의 dtype을 float로 바꾸려면 %로 된 문자열 부분 때문에 그냥은 쉽지 않다 이럴 때는 아래와 같은 코드를 사용하면 된다 cond1 = s.astype('str').str.contains('%') s.mask(cond1, s.astype('str').str.replace('%', '').astype('float').div(100)).astype('float') output 0 1.0 1 2.0 2 3.0 dtype: float64 %외에도 문자열로 섞여있는 다른 값이 .. 2023. 7. 5.
[pandas] 파일에서 데이터 프레임을 읽어올 때 공통된 열이름이 있을 때 해결책 csv파일이나 엑셀파일에서 데이터 프레임을 불러올 때 열 이름이 공통인 경우 넘버링을 해서 구분한다 그 때 넘버링이 되지 않기를 바랄 경우에 대한 해결책 실습을 위해 파일이 필요한데 열 이름이 공통인 파일을 제공하고 여러분이 다운받아서 실습해보는 것은 번거로우니 문자열을 csv파일처럼 읽는 방법을 사용하자 (https://kimpanda.tistory.com/137) import pandas as pd import io str1 = ''' A,B,C,A 1,2,3,4 ''' df = pd.read_csv(io.StringIO(str1)) df 위 df는 columns에 A가 두개있어서 두번째 A가 A.1로 구분되었다 이런 경우에 넘버링이 되지 않고 원래의 열 이름을 그대로 갖고 있기를 바라는 경우도 있을.. 2023. 6. 25.
[pandas] 문자열을 csv파일처럼 읽어 데이터 프레임으로 부르고 싶을 때 ''' A,B,C,D 1,2,3,4 ''' 작성한 문자열을 csv파일처럼 읽어 데이터 프레임으로 부르고 싶을 때가 있다 이때는 io를 import해서 StringIO 함수를 사용하면 된다 구글코랩이나 아나콘다로 주피터 노트북을 깔았다면 io라이브러리는 별도의 설치가 필요없다 그게 아니라면 라이브러리 설치법을 검색해서 설치를 해야 한다 import pandas as pd import io str1 = ''' A,B,C,D 1,2,3,4 ''' pd.read_csv(io.StringIO(str1)) output: 문자열을 마치 csv파일처럼 데이터프레임으로 읽어왔다 read_clipboard 함수를 쓸 수 없는 구글코랩에서 특히 유용하다 유튜브에서 판다스 강의 중입니다 https://www.youtube.c.. 2023. 6. 25.
numpy 에서 random 함수를 사용할 때 seed를 생성하는 방법 seed 를 생성하면 미리 정해진 세트의 난수를 반환합니다. 그래서 동일한 랜덤 배열을 반환할 수 있습니다 import numpy as np print('seed=0') np.random.seed(seed=0) print(np.random.randint(0, 5, 5)) print(np.random.randint(0, 5, 5)) print(np.random.randint(0, 5, 5)) print('seed=0') np.random.seed(seed=0) print(np.random.randint(0, 5, 5)) print(np.random.randint(0, 5, 5)) print(np.random.randint(0, 5, 5)) output: seed=0 [4 0 3 3 3] [1 3 2 4 0.. 2023. 6. 14.
[pandas] 데이터 프레임의 인덱스에서 특정 값 제거하기 데이터 프레임의 인덱스(index or columns)에서 특정 값을 제거하기 import pandas as pddf = pd.DataFrame([1, 2, 3, 4, 5], index=list('ABCDE')).T df :  df의 columns에서 'C'를 제거해 보자.    1. drop 함수로 해당 열을 삭제하고 columns를 반환한다.df.drop('C', axis=1).columnsIndex(['A', 'B', 'D', 'E'], dtype='object')   2. drop 함수는 인덱스에도 적용이 가능하다.df.columns.drop('C')    3. 열 이름이 너무 길어서 위치로 삭제하고 싶다면 아래와 같은 코드로 가능하다.df.columns.drop(df.columns[2])   4.. 2023. 6. 1.
[pandas] read_clipboard 함수쓸 때 데이터에 공백이 있을 때 처리방법 A B Col C -0.04 -0.16 0.32 0.23 0.52 0.11 0.60 0.85 -0.09 0.20 0.38 0.16 만약 위와 같은 테이블을 read_clipboard로 불러오면 'Col C'의 공백을 구분자(seperator)로 인식해서 Col열과 C열을 분리해서 불러올 때가 있습니다. 그럴 때는 2개이상의 공백을 구분자로 사용하세요 pd.read_clipboard(sep='\s{2,}') 정규 표현식을 알게 되면 코드의 뜻도 이해할 수 있습니다. 2023. 6. 1.