일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 유니티
- Excel
- 리눅스
- PyQt5
- tensorflow
- ubuntu
- Unity
- urllib
- python
- pandas
- 맛집
- javascript
- 날짜
- node.js
- ASP
- MySQL
- PyQt
- 함수
- flutter
- GIT
- 다이어트
- MS-SQL
- sqlite
- swift
- PER
- mssql
- port
- IOS
- Linux
- 라즈베리파이
목록랭귀지/pandas (104)
아미(아름다운미소)
diff_rows = df1.ne(df2).any(axis=1)different_rows = df1[diff_rows]print(different_rows)# 비교 결과를 더 자세히 보기comparison = df1.compare(df2, align_axis=0, # 세로로 비교 결과 표시 keep_shape=True, # 모든 행 유지 keep_equal=True) # 같은 값도 표시# 인덱스 정리comparison = comparison.rename(index={'self': 'df1', 'other': 'df2'}, level=-1)print(comparison)
import pandas as pddef optimize_memory_usage(df, verbose=True, obj_to_category=True, unique_threshold=0.5): """ 데이터프레임의 메모리 사용량을 최적화하는 함수 Parameters: - df: pandas DataFrame - verbose: 최적화 전후 메모리 사용량 출력 (기본값 True) - obj_to_category: 문자열 컬럼을 범주형으로 변환할지 여부 (기본값 True) - unique_threshold: 범주형 변환 기준 (고유값 비율, 기본값 0.5) Returns: - 최적화된 pandas DataFrame """ if ..
# 기존 메모리 사용량 확인df.info(memory_usage='deep')# 정수형 컬럼 최적화int_cols = df.select_dtypes(include=['int64']).columnsdf[int_cols] = df[int_cols].apply(pd.to_numeric, downcast='integer')# 실수형 컬럼 최적화float_cols = df.select_dtypes(include=['float64']).columnsdf[float_cols] = df[float_cols].apply(pd.to_numeric, downcast='float')# 문자열 컬럼은 범주형으로 변환 (고유값이 적은 경우)obj_cols = df.select_dtypes(include=['object']).co..
# Object 타입 열별 고유값 개수 확인for col in df.select_dtypes(include=['object']).columns: unique_count = df[col].nunique() print(f"{col}: {unique_count}개 고유값") # 고유값이 10개 이하인 경우에만 변환 (임계값 조정 가능) if unique_count {col}을(를) category로 변환")
import time# 실행 시간을 측정하는 데코레이터 정의def measure_time(func): def wrapper(*args, **kwargs): start_time = time.time() # 시작 시간 result = func(*args, **kwargs) # 원본 함수 실행 end_time = time.time() # 종료 시간 elapsed_time = end_time - start_time # 경과 시간 print(f"[측정 완료] '{func.__name__}' 함수 실행 시간: {elapsed_time:.4f}초") return result # 원본 함수의 결과 반환 return wrapp..
# 원본 merge 코드df_merge = df2.merge(df3, how='left', left_on='a', right_on='b').set_index('d')# join으로 변환한 코드df_join = ( df2.set_index('a') # left_on='a' → 인덱스 .join(df3.set_index('b'), # right_on='b' → 인덱스 how='left') .reset_index() # 인덱스(a)를 컬럼으로 복원 .set_index('d') # 최종 인덱스 설정)# 결과 비교print(df_merge.equals(df_join)) # True여야 일치# 원본 merge 결과와 100% ..
data = {'a': ['hello', np.nan, 'nan', None]} # 'nan'은 문자열df = pd.DataFrame(data)array = np.where(pd.isna(df['a'].to_numpy()), '', df['a'].to_numpy())# 결과: ['hello', '', 'nan', '']import pandas as pdimport numpy as np# 샘플 데이터 생성data = {'a': [1, np.nan, 3, np.nan, 5], 'b': [np.nan, 2, np.nan, 4, np.nan]}df = pd.DataFrame(data)# 성능 개선된 처리array = df['a'].to_numpy() # dtype=object 제거 (float64로 자동 변..
극한의 성능 필요시# 리스트 컴프리헨션 + 딕셔너리 생성def fast_concat(df_list, target_cols): return pd.DataFrame( {col: pd.concat([df[col] for df in df_list if col in df], ignore_index=True) for col in target_cols} )final_result = fast_concat([df1, df2], list_columns)### 방법 1: `reindex` 사용import pandas as pd# 예시 데이터프레임들df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})df2 = pd...
import pandas as pdimport numpy as np# 샘플 DataFrame 생성data = { 'A': [11111, 22222, 11111, 33333, 44444], 'B': ['@', '', '@', '', '']}df = pd.DataFrame(data)# 결과를 저장할 새로운 열 'C' 생성df['C'] = np.where(df['B'] == '@', df['A'].shift(), df['A'])# DataFrame 출력print(df) import pandas as pd# 예시 데이터프레임 생성data = {'column': ['11111@111', '22222', '33333@333', '44444']}df = pd.DataFrame(data)# @ 기준으로 앞..
import pandas as pdimport redef last_number(x): if pd.isna(x): # NaN 확인 return '' match = re.search(r'(? import pandas as pd# 예시 데이터프레임 생성df2 = pd.DataFrame({'bbb': ['abc-123', 'def-456', 'ghi', 'jkl-789', None]})# 벡터화된 연산으로 처리df = pd.DataFrame()df['aaa'] = df2['bbb'].str.extract(r'(?