๊น์์ ๊ฐ์ฌ๋
Python์ ํ์ฉํ์ฌ ์์ธ์ ๋ฐ๋ฆ์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์๊ฐํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค. ์ด ๊ธ์์๋ ๋ฐ์ดํฐ ์์ง, ๊ฐ๊ณต, ๋ถ์, ๊ทธ๋ฆฌ๊ณ ์๊ฐํ๊น์ง์ ์ ๊ณผ์ ์ ์ค๋ช
ํฉ๋๋ค.
๐ ๋ชฉ์ฐจ
1. ๋ฌธ์ ์ ์
2. ๋ฐ์ดํฐ ์์ง
3. ๋ฐ์ดํฐ ๊ฐ๊ณต
4. ๋ฐ์ดํฐ ๋ถ์
5. ๋ฐ์ดํฐ ์๊ฐํ
์์ธ์ ๊ณต๊ณต์์ ๊ฑฐ ๋ฐ๋ฆ์ด ๋ฐ์ดํฐ๋ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ์ด ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ํด๊ฒฐํด๋ณด๊ฒ ์ต๋๋ค:
์๊ฐ ๊ฐ๋
: ์์ผ๋ณ, ์๊ฐ๋๋ณ ์ด์ฉ ํจํด ๋ถ์.
์ฅ์์ ํน์ง: ์ง์ญ๋ณ ์ธ๊ธฐ ๋์ฌ์ ๋ฐ ํ๊ท ์ด์ฉ ์๊ฐ ๋ถ์.
์๊ฐ๊ณผ ์ฅ์์ ๊ฒฐํฉ: ํน์ ์๊ฐ๋์ ์ฅ์์ ์ด์ฉ ํจํด ๋ถ์.
ํ์ํ ๋ฐ์ดํฐ
import pandas as pd
# CSV ํ์ผ ์ฝ๊ธฐ
data_files = [f"bike_rent_{i}.csv" for i in range(1, 7)]
dataframes = [pd.read_csv(file) for file in data_files]
# ๋ฐ์ดํฐ ํฉ์น๊ธฐ
bikes = pd.concat(dataframes, ignore_index=True)
# ๋ฐ์ดํฐํ๋ ์ ์ ๋ณด ํ์ธ
print(bikes.info())
# ๋ฐ์ดํฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
print(bikes.head())
# '๋์ฌ์ผ์'๋ฅผ datetime ํ์์ผ๋ก ๋ณํ
bikes['๋์ฌ์ผ์'] = pd.to_datetime(bikes['๋์ฌ์ผ์'])
# ์ผ์, ์์ผ, ์๊ฐ๋ ์ถ๊ฐ
bikes['์ผ์'] = bikes['๋์ฌ์ผ์'].dt.date
bikes['์์ผ'] = bikes['๋์ฌ์ผ์'].dt.day_name()
bikes['์๊ฐ๋'] = bikes['๋์ฌ์ผ์'].dt.hour
bikes['์ฃผ๋ง๊ตฌ๋ถ'] = bikes['์์ผ'].apply(lambda x: '์ฃผ๋ง' if x in ['Saturday', 'Sunday'] else 'ํ์ผ')
# ์์ผ๋ณ ๋์ฌ ๊ฑด์
weekday_counts = bikes['์์ผ'].value_counts()
print(weekday_counts)
# ์๊ฐ๋๋ณ ๋์ฌ ๊ฑด์
hourly_counts = bikes['์๊ฐ๋'].value_counts().sort_index()
print(hourly_counts)
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
sns.countplot(data=bikes, x='์์ผ', order=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])
plt.title('์์ผ๋ณ ๋์ฌ ๊ฑด์')
plt.show()
plt.figure(figsize=(10, 6))
sns.barplot(x=hourly_counts.index, y=hourly_counts.values)
plt.title('์๊ฐ๋๋ณ ๋์ฌ ๊ฑด์')
plt.xlabel('์๊ฐ๋')
plt.ylabel('๊ฑด์')
plt.show()
import folium
# ์ง๋ ์์ฑ
seoul_map = folium.Map(location=[37.5665, 126.9780], zoom_start=11)
# ๋์ฌ์ ์์น ํ์
for idx, row in bikes.iterrows():
folium.CircleMarker(
[row['์๋'], row['๊ฒฝ๋']],
radius=5,
color='blue',
fill=True
).add_to(seoul_map)
# ์ง๋ ์ถ๋ ฅ
seoul_map.save("seoul_bike_map.html")
import pandas as pd
df = pd.read_csv('data.csv') # ๋ฐ์ดํฐ ์ฝ๊ธฐ
df.to_csv('output.csv', index=False) # ๋ฐ์ดํฐ ์ ์ฅ
print(df.head()) # ๋ฐ์ดํฐ์ ์์ 5ํ ํ์ธ
print(df.info()) # ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํ์
ํ์ธ
print(df.describe()) # ์์นํ ๋ฐ์ดํฐ ์์ฝ ํต๊ณ
print(df.iloc[0]) # ์ฒซ ๋ฒ์งธ ํ ์ ํ
print(df.loc[df['์ปฌ๋ผ๋ช
'] > 10]) # ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ ์ ํ
df_sorted = df.sort_values(by='์ปฌ๋ผ๋ช
', ascending=False) # ํน์ ์ปฌ๋ผ ๊ธฐ์ค ์ ๋ ฌ
print(df.isnull().sum()) # ๊ฒฐ์ธก์น ๊ฐ์ ํ์ธ
df['์ปฌ๋ผ๋ช
'] = df['์ปฌ๋ผ๋ช
'].fillna(0) # ๊ฒฐ์ธก์น๋ฅผ 0์ผ๋ก ์ฑ์
grouped = df.groupby('์ปฌ๋ผ๋ช
').mean() # ํน์ ์ปฌ๋ผ ๊ธฐ์ค ํ๊ท ๊ณ์ฐ
print(grouped)
import matplotlib.pyplot as plt
df['์ปฌ๋ผ๋ช
'].plot(kind='line')
plt.show()
Seaborn:
python
Copy code
import seaborn as sns
sns.barplot(x='์์ผ', y='์ด์ฉ๊ฑด์', data=df)
plt.show()
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๊ณ ์๋ค๋ฉด, ํ์ด์ฌ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ์ ์ ์ ๋ถ์์ด ์์ธ๋ก ์ฌ์ธ ์ ์์ต๋๋ค.
์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ๊ฐ๊ณตํ๋ ๊ฒ์ด ์คํ๋ ค ๋์ด๋๊ฐ ๋์ ์ ์์ต๋๋ค.
ํ์ด์ฌ ๋ฐ์ดํฐ ๋ถ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ผ๋ง๋ ์ ํ์ฉํ๋๋๊ฐ ๊ด๊ฑด์ ๋๋ค. ๋ฉ์๋๋ง ์ ์ดํดํ๊ณ ์ ์ฉํ๋ฉด, ๋ณต์กํ ๋ถ์๋ ๊ฐ๋จํ ์ฝ๋๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ํ, ๋ฐ์ดํฐ์ ๋ฐ๋ผ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ณ ์ ํฉํ ๋ฉ์๋๋ฅผ ์ ํํ๋ ๋ฅ๋ ฅ์ด ์ค์ํฉ๋๋ค.
์์ธ์ ๋ฐ๋ฆ์ด ๋ฐ์ดํฐ ๋ถ์์ ํตํด ์๊ฐ๊ณผ ์ฅ์์ ๋ฐ๋ฅธ ์ด์ฉ ํจํด์ ํ์ธํ์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ ๋์ ๊ตํต ๊ฐ์ ๋ฐ ์์ ๊ฑฐ ์ธํ๋ผ ํ์ถฉ์ ์ค์ํ ์ฐธ๊ณ ์๋ฃ๋ก ํ์ฉ๋ ์ ์์ต๋๋ค.