Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 다이어트
- 맛집
- mssql
- 날짜
- sqlite
- Unity
- tensorflow
- 유니티
- pandas
- PyQt5
- port
- PyQt
- ASP
- 리눅스
- flutter
- python
- javascript
- MySQL
- Excel
- 라즈베리파이
- IOS
- Linux
- node.js
- swift
- 함수
- ubuntu
- PER
- GIT
- MS-SQL
- urllib
Archives
아미(아름다운미소)
pandas의 str.split(expand=True)를 사용한 방법 본문
import pandas as pd
import numpy as np
import time
# 1. 예제 데이터 생성 (400만 건, '_' 없는 값 포함)
data = {'a': ['foo_bar'] * 2_000_000 + ['hello_world'] * 1_500_000 + ['example'] * 500_000 + ['justtext'] * 500_000}
df1 = pd.DataFrame(data) # Pandas용
df2 = df1.copy() # NumPy용
### 2. Pandas str.split(expand=True) 방식 ###
start_time = time.time()
debris = df1['a'].str.split('_', expand=True)
df1['aaa'] = debris[0]
df1['bbb'] = debris[1] # NaN이 자동 할당됨
pandas_time = time.time() - start_time
### 3. NumPy 벡터화 방식 ###
start_time = time.time()
split_values = np.array([x.split('_') if '_' in x else (x, np.nan) for x in df2['a']], dtype=object)
df2['aaa'] = split_values[:, 0]
df2['bbb'] = split_values[:, 1] # np.nan을 사용하여 Pandas와 동일하게 처리
numpy_time = time.time() - start_time
### ✅ 결과 비교 ###
is_equal = df1.equals(df2)
# 결과 출력
print(f"Pandas str.split(expand=True) 실행 시간: {pandas_time:.4f} 초")
print(f"NumPy 벡터화 실행 시간: {numpy_time:.4f} 초")
print(f"결과가 일치하는가? {'✅ 동일' if is_equal else '❌ 다름'}")
# 샘플 결과 출력 (상위 5개 데이터)
print("\n📌 Pandas 방식 결과 샘플")
print(df1.head())
print("\n📌 NumPy 방식 결과 샘플")
print(df2.head())
Comments