분석 Python/Pandas Tip(24)
-
Python) datetime64[ns]로 변환하는 방법
df['timestamp'] = pd.to_datetime(df.timestamp).dt.tz_localize(None) https://stackoverflow.com/questions/62917882/convert-datetime64ns-utc-pandas-column-to-datetime convert datetime64[ns, UTC] pandas column to datetime I have a dataframe which has timestamp and its datatype is object. 0 2020-07-09T04:23:50.267Z 1 2020-07-09T11:21:55.536Z 2 2020-07-09T11:23:18.015Z 3 2020-07-09T04:03:28.581Z 4 202..
2022.10.10 -
Pandas Profiling 패키지 Customization 하기
최신 버전 기준으로 설치해야 할 수 있다.(21/03/08 기준) !pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip !pip install pydot !pip install pygraphviz from pandas_profiling.model.typeset import ProfilingTypeSet typeset = ProfilingTypeSet() typeset.plot_graph(dpi=100) 데이터 읽기! import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/tita..
2021.03.08 -
[Pandas] Code to reduce memory
def mem_usage(pandas_obj): if isinstance(pandas_obj,pd.DataFrame): usage_b = pandas_obj.memory_usage(deep=True).sum() else: # we assume if not a df it's a series usage_b = pandas_obj.memory_usage(deep=True) usage_mb = usage_b / 1024 ** 2 # convert bytes to megabytes return "{:03.2f} MB".format(usage_mb) def type_memory(data) : for dtype in ['float','int','object']: selected_dtype = data.select_d..
2021.01.01 -
[Pandas] Pandas의 Filter 함수를 사용하여 특정 컬럼(변수) 제외하기
row / test / key가 column 이름에 들어간 것들은 제외하는 regular expression data를 아래와 같이 생성 np.random.seed(1234) cols = [f"{random()}_{i}" for i in np.arange(20)] array = np.random.normal(size=(100,20)) data = pd.DataFrame(array , columns = cols) data ['col_0', 'col_1', 'test_2', 'row_3', 'type_4', 'type_5', 'type_6', 'row_7', 'col_8', 'row_9', 'col_10', 'row_11', 'test_12', 'test_13', 'col_14', 'test_15', 'ty..
2020.12.15 -
[TIP / Pandas] Change Columns Order (열 순서 바꾸기)
열 순서 바꾸기def change_column_order(data , cols:list , positions:list) : for position , col in zip(positions , cols) : pop_ = data.pop(col) data.insert(position, pop_.name, pop_.values) return data data = change_column_order(data , cols =["key"], positions=[0])
2020.10.28 -
[Python] Pandas를 활용하여 엑셀 시트별로 만들기
한 엑셀 파일에 여러 데이터를 담아두고 싶을 때 사용할 수 있다. 우리가 엑셀을 사용할 때 여러 엑셀 시트를 만드는 것과 동일하게 생각하면 됨. 어려운 것은 아니지만, 까먹을 수 있으므로 남겨둔다. with pd.ExcelWriter(f"./../../data/processed/hw/info.xlsx") as writer: dataset = [###] for idx , data in enumderate(datasets) : #### data.to_excel(writer, sheet_name=str(idx), index=False) 추가적으로 이미지 넣기 import xlsxwriter # Create an new Excel file and add a worksheet. workbook = xlsxwrit..
2020.10.20 -
[Python] pandas에서 데이터 더 빠르고 가볍게 읽는 방법
This is because when a process requests for memory, memory is allocated in two ways: Contiguous Memory Allocation (consecutive blocks are assigned) NonContiguous Memory Allocation(separate blocks at different locations) Pandas는 RAM에 데이터를 적재하기 위해서 Contiguous Memory 방식을 사용한다. 왜냐하면 읽고 쓰는 것은 디스크보다 RAM에서 하는 것이 더 빠르게 때문이다. Reading from SSDs: ~16,000 nanoseconds Reading from RAM: ~100 nanoseconds 몇 가지 ..
2020.10.07 -
[Pandas] 조건걸고 새로운 컬럼 추가하기
https://signing.tistory.com/55#comment5838430 [Tips] 조건걸고 새로운 컬럼 추가하기 in Pandas DataFrame R에서는 대부분의 핸들링을 자유롭게 하던 나는 파이썬으로 그 작업들을 하나씩 진행하고자 한다. 분석을 진행하기 위해서 데이터를 내가 원하는 모양으로 맞춰줄 필요가 있다. 현재 내가 분석� signing.tistory.com 기존 signing님의 방법 (List Comprehension) iris['new_column'] = ['Large' if t else 'Small' for t in list(iris['Sepal.Length'] > 4)] 사전을 활용하여 값 변환해주기 iris = sns.load_dataset("iris") dict_ = ..
2020.08.12 -
[Pandas] data type별로 컬럼들을 사전 형태로 모으기
판다스에서 data type 별로 모으기 위해서 여러 가지를 시도할 수가 있다. data.sample(50).select_dtypes("float").columns.tolist() data.sample(50).select_dtypes("object").columns.tolist() 하지만 이런 것 말고 타입별로 한꺼번에 모으는 작업을 하고 싶다면 아래와 같은 함수를 사용하면 된다. def make_type_dct(df) : import re type_dct = {"float" : [], "int" : [], "object" :[] , "category" : []} r = re.compile(r"([A-Za-z\s]+)") [ type_dct[r.search(str(k)).group(1)].extend(l..
2020.07.23 -
[Pandas] 여러개의 컬럼 하나로 합치기
여러개의 변수들을 하나로 합치는 것에 대한 심플 버전은 다음과 같이 apply(axis=1)을 방향으로 합칠 수 있음. cols = ['sex', 'day', 'smoker'] tip['combined'] = tip[cols].apply(lambda row: '_'.join(row.values.astype(str)), axis=1) 복합적으로 다양한 것을 적용해본 결과는 다음과 같음 tip = sns.load_dataset("tips") def make_original(x) : xs = x.dropna() xs_np = xs.values first = '-'.join(xs_np.astype(str)[:-3]) original = first + "@" + str(xs_np[-2]) + "_" + str(i..
2020.07.22 -
Pandas 중복되는 값의 시작점과 누적후에 끝점 위치 구해보기
조건을 줘서 누적까지 감안한 위치를 구하고 싶다 만약에 아래 그림처럼 elu는 (0,0) leaky_relu(1,2), selu(3,3) leaky_relu(4,6) 이런 식으로 구해야했다. import pandas as pd data = pd.read_csv("./save_parameter.csv") data.head() (data["activation"].\ groupby((data['activation'] != data['activation'].shift(1)).cumsum()).cumcount()+1).head(7) 여러 번의 삽질을 통해서 구할 수 있게 됐다 ㅠㅠㅠ 아주 긴 함수를 만들게 됬다 ㄷㄷㄷ def find_index(x): df_by_group = pd.DataFrame(x.index..
2020.07.14 -
pandas useful tip
frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon']) frame def f(x): return pd.Series([x.min(), x.max()], index=['min', 'max']) frame.apply(f) # axis =1 (각 열) frame.apply(f,axis="columns") format = lambda x: '%.2f' % x frame.applymap(format) report = pd.DataFrame([ [1, 10, 'John'], [1, 20, 'John'], [1, 30, 'Tom'], [1, 10, 'Bob'], [2, 25, 'Jo..
2020.06.25