20240725 TIL
어제 데이터 정리와 분석을 한 것을 가지고 맡은 컬럼을 데이터 전처리를 해볼 것이다.
데이터 전처리 하기
10-20 세대 별 가장 좋아하는 음악 감상 시간
사용할 컬럼 - 'Age', 'music_time_slot'
1)데이터 불러오기
#파일 불러오기
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('/Users/minjungim/Documents/ 1Spotify_data_.xlsx')
print(data)
엑셀파일이기때문에 엑셀로 불러와야 함
데이터가 저장된 위치를 복사하여 넣어줘야 함!
2)데이터 정보 확인하기
-info() 함수를 통해 데이터가 어떤 정보가 있는지 확인해준다.
data.info()
<결과값>
3) 결측값 확인해주기
print(df.isnull().sum())
#혹시 몰라 필요한 컬럼들 다시 결측값 확인
print(data['music_time_slot'].isnull().sum())
print(data['Age'].isnull().sum())
print(data['music_recc_rating'].isnull().sum())
#결측값은 다 0으로 나옴
4) 필요한 컬럼에 어떤 데이터들이 있는지 확인하기
print(data['Age'].unique()) #['20-35' '12-20' '35-60' '6-12' '60+']
print(data['music_time_slot'].unique()) #['Night' 'Afternoon' 'Morning']
5) 12-20 세대 별 빈도 수 확인하기
ages = data[(data['Age'] == '12-20')]['music_time_slot'].value_counts()
ages
#Afternoon 33
#Night 21
#Morning 17
#Name: music_time_slot, dtype: int64
나는 10-20 세대 별을 구해야 하기 때문에 'Age' 컬럼에서 12-20만 빼준다.
빈도 수를 확인할 수 있는 함수 = value.count()
10-20 세대 별로 음악 감상 시간 빈도 수를 구하기 위해 필요한 컬럼 사용
6) 빈도 수를 시각화 하기 위해 비율 구하기
ages = data[(data['Age'] == '12-20')]['music_time_slot'].value_counts(normalize=True) * 100
ages
#Afternoon 46.478873
#Night 29.577465
#Morning 23.943662
#Name: music_time_slot, dtype: float64
시각화 하기 위해 비율을 구해준다.
value_counts에 (normalize=True)를 넣어주면 바로 비율을 구할 수 있다.
* 100을 해줌으로써 시각화했을때 보기 편하게 바꿔준 것!
7) 막대 그래프를 통한 시각화
plt.figure(figsize=(10,6)) # 그래프 사이즈 정하는 것
ages.plot(kind='bar', color=['r', 'g', 'y'], alpha = 0.3)
plt.xlabel('Music Time Slot')
plt.ylabel('Proportion')
plt.title('Music Time Slot Distribition for Age 12-20')
plt.xticks(rotation=0) # x축의 라벨이 수평으로 표시되도록 설정
plt.show()
kind 뒤에는 여러가지 그래프들의 이름이 들어갈 수 있고 나는 막대 그래프가 필요하므로 bar를 사용
color도 원하는 색상으로 정해주고 alpha는 컬러의 진함, 연함 정도를 나타내기 때문에 숫자가 낮을수록 연하게 나타난다.
<결과값>
이렇게 예쁘게 나온다 !!
10-20 세대 별 음악 추천 평가도
1) 데이터는 앞과 똑같이 혹시 몰라서 다시 한 번 데이터를 불러온다
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('/Users/minjungim/Documents/ 1Spotify_data_.xlsx')
print(data)
2) 필요한 컬럼에 어떤 값들이 있는지 확인하기
print(data['music_recc_rating'].unique())
#[3 2 4 5 1]
3)10-20 세대 별 빈도 수 확인하기
ages2 = data[(data['Age'] == '12-20')]['music_recc_rating'].value_counts()
ages2
#3 38
#2 14
#4 12
#5 6
#1 1
앞서 ages를 썼기 때문에 이 컬럼은 ages2로 정해준다.
4) 빈도 수에 시각화 하기 위해 비율 구하기
ages2 = data[(data['Age'] == '12-20')]['music_recc_rating'].value_counts(normalize=True) * 100
ages2
#3 53.521127
#2 19.718310
#4 16.901408
#5 8.450704
#1 1.408451
#Name: music_recc_rating, dtype: float64
컬럼들만 다르고 나머지 코드들은 다 똑같이 넣어주면 된다.
5) 시각화 - 막대그래프
plt.figure(figsize=(10,6))
ages2.plot(kind='bar', color='skyblue')
plt.xlabel('Music_Recc_Rating')
plt.ylabel('Proportion')
plt.title('Music Recc Raiting Distribution for Age 12-20')
plt.xticks(rotation=0) #X축의 라벨이 수평으로 표시되도록 설정
plt.show()
이번엔 컬러를 sky blue로 해봤다. 똑같은 막대 그래프이기 때문에 동일한 코드를 적어주면 된다
<결과 값>
이렇게 두 개의 컬럼에 대한 데이터 분석을 해봤고 좀 아쉬운 점이 몇가지 있다.
1. 막대 그래프에 값을 나타내는 법
2. recc_rating 컬럼에 대해 점수를 정렬하는 법
3. 시각화 그래프 디자인 또는 컬러 생각해보기
이 세 가지의 나의 현재 고민이다.
1번과 2번은 구글링 해봤지만 이해가 잘 안돼서 내일 팀원들한테 물어봐서 도움을 좀 얻어야 할 것 같다.
나중에 발표를 하기 위해 피피티 작업을 할때 값이나 숫자가 정렬이 좀 돼 있으면 직관적으로 보기 좀 더 편할 것 같다!
3번은 이것도 발표할 때 그래프는 시각적으로 보는거니까 좀 예뻤으면 하는 마음에 이런 생각을 했다.
사실 내가 컬럼들을 이렇게 데이터 분석하는 것이 맞는 건지 잘 모르겠다. 내일 팀원분들과 공유를 해봐야 하는 거긴 하지만 좀 걱정이 된다..^^
그래도 생각보다 어렵지 않게 코드를 짤 수 있었다 ! 물론 구글링을 아예 안한 것 아니지만 이렇게 블로그로 다시 한 번 정리를 하니 좀 더 기억에 남는 것 같다
다음 블로그는 아쉬운 점 3가지를 보완한 점과 팀원들과 공유한 사안에 대해서 적어보도록 하겠다
'Project' 카테고리의 다른 글
[심화 프로젝트] 이커머스 주간 판매량 예측3 (0) | 2024.08.30 |
---|---|
[심화 프로젝트] 이커머스 주간 판매량 예측2 (1) | 2024.08.28 |
[기초 프로젝트] END! + 피드백 (0) | 2024.07.29 |
[기초 프로젝트] DAY 3 (0) | 2024.07.26 |
[기초 프로젝트] START! (10) | 2024.07.24 |