yokoha commited on
Commit
3c21712
Β·
verified Β·
1 Parent(s): dd75514

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -12
app.py CHANGED
@@ -220,23 +220,35 @@ def load_data() -> pd.DataFrame:
220
  # λ‚ μ§œ λ³€ν™˜ μ „ν›„ 데이터 수 확인
221
  before_date_convert = len(df)
222
 
223
- # κΈ°μ‘΄ dateκ°€ λ¬Έμžμ—΄μ΄κ³  λ…„μ›” ν˜•μ‹(YYYYMM)인 경우 처리
224
- if pd.api.types.is_object_dtype(df["date"]):
225
- try:
226
- # 숫자둜만 κ΅¬μ„±λœ λ¬Έμžμ—΄μΈμ§€ 확인
227
- is_numeric = df["date"].str.isnumeric().all()
 
228
 
229
- # λ§Œμ•½ YYYYMM ν˜•μ‹μ΄λ©΄ (6자리 숫자)
230
- if is_numeric and df["date"].str.len().mean() >= 6:
231
- # YYYYMM ν˜•μ‹ λ³€ν™˜
232
- df["date"] = pd.to_datetime(df["date"].astype(str), format="%Y%m")
 
 
 
 
233
  # μ›”μ˜ λ§ˆμ§€λ§‰ λ‚ λ‘œ μ„€μ •
234
  df["date"] = df["date"] + pd.offsets.MonthEnd(0)
 
 
235
  else:
236
- # 일반 λ³€ν™˜
237
  df["date"] = pd.to_datetime(df["date"], errors="coerce")
 
 
 
 
 
 
238
  except:
239
- # 일반 λ³€ν™˜
240
  df["date"] = pd.to_datetime(df["date"], errors="coerce")
241
 
242
  # λ‚ μ§œ λ³€ν™˜ ν›„ 데이터 확인
@@ -261,7 +273,11 @@ def load_data() -> pd.DataFrame:
261
  # 데이터 정보 ν‘œμ‹œ
262
  if len(df) > 0:
263
  st.sidebar.write(f"μ΅œμ’… 데이터: {len(df)}개 ν–‰")
264
- st.sidebar.write(f"데이터 λ‚ μ§œ λ²”μœ„: {df['date'].min().strftime('%Y-%m-%d')} ~ {df['date'].max().strftime('%Y-%m-%d')}")
 
 
 
 
265
  st.sidebar.write(f"총 ν’ˆλͺ© 수: {df['item'].nunique()}")
266
  st.sidebar.write(f"ν’ˆλͺ©λ³„ 평균 데이터 수: {len(df)/df['item'].nunique():.1f}개")
267
  else:
 
220
  # λ‚ μ§œ λ³€ν™˜ μ „ν›„ 데이터 수 확인
221
  before_date_convert = len(df)
222
 
223
+ # YYYYMM ν˜•μ‹ λ³€ν™˜ (숫자둜 μ €μž₯된 κ²½μš°λ„ 처리)
224
+ try:
225
+ # 데이터 νƒ€μž… 확인
226
+ if pd.api.types.is_integer_dtype(df["date"]):
227
+ # μ •μˆ˜ν˜• YYYYMM을 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ ν›„ 처리
228
+ df["date"] = df["date"].astype(str)
229
 
230
+ # λ¬Έμžμ—΄ ν˜•μ‹ 처리
231
+ if pd.api.types.is_object_dtype(df["date"]):
232
+ # YYYYMM ν˜•μ‹μΈμ§€ 확인 (6자리 숫자)
233
+ if df["date"].str.match(r'^\d{6}$').all():
234
+ # μ—°, μ›” κ΅¬λΆ„ν•΄μ„œ datetime으둜 λ³€ν™˜
235
+ df["year"] = df["date"].str[:4].astype(int)
236
+ df["month"] = df["date"].str[4:6].astype(int)
237
+ df["date"] = pd.to_datetime(dict(year=df["year"], month=df["month"], day=1))
238
  # μ›”μ˜ λ§ˆμ§€λ§‰ λ‚ λ‘œ μ„€μ •
239
  df["date"] = df["date"] + pd.offsets.MonthEnd(0)
240
+ # μž„μ‹œ 컬럼 μ‚­μ œ
241
+ df.drop(columns=["year", "month"], inplace=True)
242
  else:
243
+ # 일반 λ³€ν™˜ μ‹œλ„
244
  df["date"] = pd.to_datetime(df["date"], errors="coerce")
245
+ except Exception as e:
246
+ st.sidebar.warning(f"λ‚ μ§œ λ³€ν™˜ 였λ₯˜: {str(e)}")
247
+ # μ΅œν›„μ˜ λ°©λ²•μœΌλ‘œ λ‹€μ‹œ μ‹œλ„
248
+ try:
249
+ df["date"] = pd.to_datetime(df["date"].astype(str), format="%Y%m", errors="coerce")
250
+ df["date"] = df["date"] + pd.offsets.MonthEnd(0)
251
  except:
 
252
  df["date"] = pd.to_datetime(df["date"], errors="coerce")
253
 
254
  # λ‚ μ§œ λ³€ν™˜ ν›„ 데이터 확인
 
273
  # 데이터 정보 ν‘œμ‹œ
274
  if len(df) > 0:
275
  st.sidebar.write(f"μ΅œμ’… 데이터: {len(df)}개 ν–‰")
276
+ # datetime ν˜•μ‹μΈμ§€ 확인
277
+ if pd.api.types.is_datetime64_dtype(df["date"]):
278
+ st.sidebar.write(f"데이터 λ‚ μ§œ λ²”μœ„: {df['date'].min().strftime('%Y-%m-%d')} ~ {df['date'].max().strftime('%Y-%m-%d')}")
279
+ else:
280
+ st.sidebar.write(f"데이터 λ‚ μ§œ λ²”μœ„: λ‚ μ§œ ν˜•μ‹ λ³€ν™˜ μ‹€νŒ¨. ν˜„μž¬ ν˜•μ‹: {type(df['date'].iloc[0])}")
281
  st.sidebar.write(f"총 ν’ˆλͺ© 수: {df['item'].nunique()}")
282
  st.sidebar.write(f"ν’ˆλͺ©λ³„ 평균 데이터 수: {len(df)/df['item'].nunique():.1f}개")
283
  else: