반응형
팁 데이터 분석¶
In [4]:
#라이브러리 불러오기
import pandas as pd
import seaborn as sns
In [5]:
#데이터 불러오기
tips=sns.load_dataset("tips") #팁 데이터
In [6]:
#데이터 보기
tips
Out[6]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
0 | 16.99 | 1.01 | Female | No | Sun | Dinner | 2 |
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
2 | 21.01 | 3.50 | Male | No | Sun | Dinner | 3 |
3 | 23.68 | 3.31 | Male | No | Sun | Dinner | 2 |
4 | 24.59 | 3.61 | Female | No | Sun | Dinner | 4 |
... | ... | ... | ... | ... | ... | ... | ... |
239 | 29.03 | 5.92 | Male | No | Sat | Dinner | 3 |
240 | 27.18 | 2.00 | Female | Yes | Sat | Dinner | 2 |
241 | 22.67 | 2.00 | Male | Yes | Sat | Dinner | 2 |
242 | 17.82 | 1.75 | Male | No | Sat | Dinner | 2 |
243 | 18.78 | 3.00 | Female | No | Thur | Dinner | 2 |
244 rows × 7 columns
In [7]:
#데이터프레임의 기본 정보 확인
tips.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 244 entries, 0 to 243
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 total_bill 244 non-null float64
1 tip 244 non-null float64
2 sex 244 non-null category
3 smoker 244 non-null category
4 day 244 non-null category
5 time 244 non-null category
6 size 244 non-null int64
dtypes: category(4), float64(2), int64(1)
memory usage: 7.3 KB
In [8]:
#데이터프레임에서 상위 5개 데이터 추출
tips.head()
Out[8]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
0 | 16.99 | 1.01 | Female | No | Sun | Dinner | 2 |
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
2 | 21.01 | 3.50 | Male | No | Sun | Dinner | 3 |
3 | 23.68 | 3.31 | Male | No | Sun | Dinner | 2 |
4 | 24.59 | 3.61 | Female | No | Sun | Dinner | 4 |
In [9]:
#데이터프레임에서 하위 데이터 추출
tips.tail()
Out[9]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
239 | 29.03 | 5.92 | Male | No | Sat | Dinner | 3 |
240 | 27.18 | 2.00 | Female | Yes | Sat | Dinner | 2 |
241 | 22.67 | 2.00 | Male | Yes | Sat | Dinner | 2 |
242 | 17.82 | 1.75 | Male | No | Sat | Dinner | 2 |
243 | 18.78 | 3.00 | Female | No | Thur | Dinner | 2 |
In [10]:
tips.tail(3)
Out[10]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
241 | 22.67 | 2.00 | Male | Yes | Sat | Dinner | 2 |
242 | 17.82 | 1.75 | Male | No | Sat | Dinner | 2 |
243 | 18.78 | 3.00 | Female | No | Thur | Dinner | 2 |
행 데이터¶
In [11]:
#2번 인덱스를 삭제하고 새로운 데이터 프레임 tips1 생성
tips1=tips.drop([2])
In [12]:
tips1
Out[12]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
0 | 16.99 | 1.01 | Female | No | Sun | Dinner | 2 |
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
3 | 23.68 | 3.31 | Male | No | Sun | Dinner | 2 |
4 | 24.59 | 3.61 | Female | No | Sun | Dinner | 4 |
5 | 25.29 | 4.71 | Male | No | Sun | Dinner | 4 |
... | ... | ... | ... | ... | ... | ... | ... |
239 | 29.03 | 5.92 | Male | No | Sat | Dinner | 3 |
240 | 27.18 | 2.00 | Female | Yes | Sat | Dinner | 2 |
241 | 22.67 | 2.00 | Male | Yes | Sat | Dinner | 2 |
242 | 17.82 | 1.75 | Male | No | Sat | Dinner | 2 |
243 | 18.78 | 3.00 | Female | No | Thur | Dinner | 2 |
243 rows × 7 columns
In [13]:
# 행 번호 읽기로 세번째 데이터를 가지고 옵니다.
tips1.iloc[2]
Out[13]:
total_bill 23.68
tip 3.31
sex Male
smoker No
day Sun
time Dinner
size 2
Name: 3, dtype: object
In [14]:
#2번 인덱스가 삭제되어 에러가 발생합니다.
tips1.loc[2]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
C:\python\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2894 try:
-> 2895 return self._engine.get_loc(casted_key)
2896 except KeyError as err:
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 2
The above exception was the direct cause of the following exception:
KeyError Traceback (most recent call last)
<ipython-input-14-384da8756a7b> in <module>
1 #2번 인덱스가 삭제되어 에러가 발생합니다.
----> 2 tips1.loc[2]
C:\python\lib\site-packages\pandas\core\indexing.py in __getitem__(self, key)
877
878 maybe_callable = com.apply_if_callable(key, self.obj)
--> 879 return self._getitem_axis(maybe_callable, axis=axis)
880
881 def _is_scalar_access(self, key: Tuple):
C:\python\lib\site-packages\pandas\core\indexing.py in _getitem_axis(self, key, axis)
1108 # fall thru to straight lookup
1109 self._validate_key(key, axis)
-> 1110 return self._get_label(key, axis=axis)
1111
1112 def _get_slice_axis(self, slice_obj: slice, axis: int):
C:\python\lib\site-packages\pandas\core\indexing.py in _get_label(self, label, axis)
1057 def _get_label(self, label, axis: int):
1058 # GH#5667 this will fail if the label is not present in the axis.
-> 1059 return self.obj.xs(label, axis=axis)
1060
1061 def _handle_lowerdim_multi_index_axis0(self, tup: Tuple):
C:\python\lib\site-packages\pandas\core\generic.py in xs(self, key, axis, level, drop_level)
3489 loc, new_index = self.index.get_loc_level(key, drop_level=drop_level)
3490 else:
-> 3491 loc = self.index.get_loc(key)
3492
3493 if isinstance(loc, np.ndarray):
C:\python\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2895 return self._engine.get_loc(casted_key)
2896 except KeyError as err:
-> 2897 raise KeyError(key) from err
2898
2899 if tolerance is not None:
KeyError: 2
1) 인덱스 읽기¶
In [15]:
#데이터프레임에서 인덱스가 0인 데이터 추출
tips.loc[0]
Out[15]:
total_bill 16.99
tip 1.01
sex Female
smoker No
day Sun
time Dinner
size 2
Name: 0, dtype: object
In [16]:
#1,3,5 인덱스를 한번에 가져오기
tips.loc[[1,3,5]]
Out[16]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
3 | 23.68 | 3.31 | Male | No | Sun | Dinner | 2 |
5 | 25.29 | 4.71 | Male | No | Sun | Dinner | 4 |
In [17]:
#데이터프레임에서 0번째 행 데이터 추출
tips.iloc[0]
Out[17]:
total_bill 16.99
tip 1.01
sex Female
smoker No
day Sun
time Dinner
size 2
Name: 0, dtype: object
In [18]:
#-1을 사용하여 마지막 행 데이터를 추출한 예제
tips.iloc[-1]
Out[18]:
total_bill 18.78
tip 3
sex Female
smoker No
day Thur
time Dinner
size 2
Name: 243, dtype: object
In [19]:
#행 3개 가지고 오기
#tips[0:3]라고 하면 0,1,2번째 행을 출력합니다. 첫 번째 행을 0번째 행이라고 가정
#행 번호를 이용하여 선택하기: .iloc
tips.iloc[0:3]
Out[19]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
0 | 16.99 | 1.01 | Female | No | Sun | Dinner | 2 |
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
2 | 21.01 | 3.50 | Male | No | Sun | Dinner | 3 |
In [20]:
#인덱스를 이용하여 선택하기: .loc
tips.loc[0:3]
Out[20]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
0 | 16.99 | 1.01 | Female | No | Sun | Dinner | 2 |
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
2 | 21.01 | 3.50 | Male | No | Sun | Dinner | 3 |
3 | 23.68 | 3.31 | Male | No | Sun | Dinner | 2 |
In [21]:
#인덱스 0부터 3까지의 컬럼 'sex'와 컬럼 'day'가져오기
tips.loc[0,['sex','day']]
Out[21]:
sex Female
day Sun
Name: 0, dtype: object
In [22]:
#특정 인덱스 값과 특정 컬럼에 있는 값 가져오기
#.at 이용 가능
tips.at[0,'sex']
Out[22]:
'Female'
In [23]:
#행과 열 동시 선택
tips.iloc[3:5, 0:2]
Out[23]:
total_bill | tip | |
---|---|---|
3 | 23.68 | 3.31 |
4 | 24.59 | 3.61 |
In [24]:
#인덱스 기준으로 행,열을 지정
tips.iloc[[1,2,4],[0,2]]
Out[24]:
total_bill | sex | |
---|---|---|
1 | 10.34 | Male |
2 | 21.01 | Male |
4 | 24.59 | Female |
In [25]:
#명시적으로 행이나 열 선택
tips.iloc[1:3, :]
Out[25]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
2 | 21.01 | 3.50 | Male | No | Sun | Dinner | 3 |
In [26]:
tips.iloc[:,1:3]
Out[26]:
tip | sex | |
---|---|---|
0 | 1.01 | Female |
1 | 1.66 | Male |
2 | 3.50 | Male |
3 | 3.31 | Male |
4 | 3.61 | Female |
... | ... | ... |
239 | 5.92 | Male |
240 | 2.00 | Female |
241 | 2.00 | Male |
242 | 1.75 | Male |
243 | 3.00 | Female |
244 rows × 2 columns
In [27]:
#값 하나 선택 -> 특정 행과 열 지정
tips.iloc[1,1]
Out[27]:
1.66
In [28]:
tips.iat[1,1]
Out[28]:
1.66
In [29]:
#전체 데이터 중 팁이 5달러 이상
tips[tips.tip >5]
Out[29]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
23 | 39.42 | 7.58 | Male | No | Sat | Dinner | 4 |
44 | 30.40 | 5.60 | Male | No | Sun | Dinner | 4 |
47 | 32.40 | 6.00 | Male | No | Sun | Dinner | 4 |
52 | 34.81 | 5.20 | Female | No | Sun | Dinner | 4 |
59 | 48.27 | 6.73 | Male | No | Sat | Dinner | 4 |
85 | 34.83 | 5.17 | Female | No | Thur | Lunch | 4 |
88 | 24.71 | 5.85 | Male | No | Thur | Lunch | 2 |
116 | 29.93 | 5.07 | Male | No | Sun | Dinner | 4 |
141 | 34.30 | 6.70 | Male | No | Thur | Lunch | 6 |
155 | 29.85 | 5.14 | Female | No | Sun | Dinner | 5 |
170 | 50.81 | 10.00 | Male | Yes | Sat | Dinner | 3 |
172 | 7.25 | 5.15 | Male | Yes | Sun | Dinner | 2 |
181 | 23.33 | 5.65 | Male | Yes | Sun | Dinner | 2 |
183 | 23.17 | 6.50 | Male | Yes | Sun | Dinner | 4 |
211 | 25.89 | 5.16 | Male | Yes | Sat | Dinner | 4 |
212 | 48.33 | 9.00 | Male | No | Sat | Dinner | 4 |
214 | 28.17 | 6.50 | Female | Yes | Sat | Dinner | 3 |
239 | 29.03 | 5.92 | Male | No | Sat | Dinner | 3 |
In [30]:
#and 조건- 남자 손님 &비흡연자
tips[(tips['sex']=='Male')&(tips['smoker']=='No')]
Out[30]:
total_bill | tip | sex | smoker | day | time | size | |
---|---|---|---|---|---|---|---|
1 | 10.34 | 1.66 | Male | No | Sun | Dinner | 3 |
2 | 21.01 | 3.50 | Male | No | Sun | Dinner | 3 |
3 | 23.68 | 3.31 | Male | No | Sun | Dinner | 2 |
5 | 25.29 | 4.71 | Male | No | Sun | Dinner | 4 |
6 | 8.77 | 2.00 | Male | No | Sun | Dinner | 2 |
... | ... | ... | ... | ... | ... | ... | ... |
232 | 11.61 | 3.39 | Male | No | Sat | Dinner | 2 |
233 | 10.77 | 1.47 | Male | No | Sat | Dinner | 2 |
235 | 10.07 | 1.25 | Male | No | Sat | Dinner | 2 |
239 | 29.03 | 5.92 | Male | No | Sat | Dinner | 3 |
242 | 17.82 | 1.75 | Male | No | Sat | Dinner | 2 |
97 rows × 7 columns
열 변수¶
In [31]:
#데이터프레임에서 tip과 size 가지고 오기
tips.tip
Out[31]:
0 1.01
1 1.66
2 3.50
3 3.31
4 3.61
...
239 5.92
240 2.00
241 2.00
242 1.75
243 3.00
Name: tip, Length: 244, dtype: float64
In [32]:
tips['size']
Out[32]:
0 2
1 3
2 3
3 2
4 4
..
239 3
240 2
241 2
242 2
243 2
Name: size, Length: 244, dtype: int64
In [33]:
#데이터프레임 'total_bill', 'tip', 'day' 열 변수 추출
tips[['total_bill','tip','day']]
Out[33]:
total_bill | tip | day | |
---|---|---|---|
0 | 16.99 | 1.01 | Sun |
1 | 10.34 | 1.66 | Sun |
2 | 21.01 | 3.50 | Sun |
3 | 23.68 | 3.31 | Sun |
4 | 24.59 | 3.61 | Sun |
... | ... | ... | ... |
239 | 29.03 | 5.92 | Sat |
240 | 27.18 | 2.00 | Sat |
241 | 22.67 | 2.00 | Sat |
242 | 17.82 | 1.75 | Sat |
243 | 18.78 | 3.00 | Thur |
244 rows × 3 columns
In [34]:
#금액과 팁의 합계인 총액 파생변수 만들기
tips['total']=tips['total_bill']+tips['tip']
In [35]:
tips.total
Out[35]:
0 18.00
1 12.00
2 24.51
3 26.99
4 28.20
...
239 34.95
240 29.18
241 24.67
242 19.57
243 21.78
Name: total, Length: 244, dtype: float64
In [36]:
#데이터프레임 자료형 확인
tips.dtypes
Out[36]:
total_bill float64
tip float64
sex category
smoker category
day category
time category
size int64
total float64
dtype: object
In [37]:
#데이터프레임 열의 자료형 확인
type(tips.total_bill)
Out[37]:
pandas.core.series.Series
In [38]:
#데이터프레임 자료형 반환
#카테고리형의 흡연 유무를 문자열로 반환하여 삽입
tips['smoker_str']=tips['smoker'].astype(str)
In [39]:
tips.smoker_str
Out[39]:
0 No
1 No
2 No
3 No
4 No
...
239 No
240 Yes
241 Yes
242 No
243 No
Name: smoker_str, Length: 244, dtype: object
데이터 조작¶
In [40]:
#데이터프레임의 개수 확인
tips.count()
Out[40]:
total_bill 244
tip 244
sex 244
smoker 244
day 244
time 244
size 244
total 244
smoker_str 244
dtype: int64
In [41]:
len(tips)
Out[41]:
244
In [42]:
#데이터프레임 인덱스 보기
tips.index
Out[42]:
RangeIndex(start=0, stop=244, step=1)
In [43]:
#데이터프레임 컬럼 보기
tips.columns
Out[43]:
Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size', 'total',
'smoker_str'],
dtype='object')
In [44]:
#행, 열 구조 보기
tips.values
Out[44]:
array([[16.99, 1.01, 'Female', ..., 2, 18.0, 'No'],
[10.34, 1.66, 'Male', ..., 3, 12.0, 'No'],
[21.01, 3.5, 'Male', ..., 3, 24.51, 'No'],
...,
[22.67, 2.0, 'Male', ..., 2, 24.67, 'Yes'],
[17.82, 1.75, 'Male', ..., 2, 19.57, 'No'],
[18.78, 3.0, 'Female', ..., 2, 21.78, 'No']], dtype=object)
In [45]:
#'지급액' 열을 기준으로 오름차순 정렬
In [46]:
tips.sort_values(by=['total_bill'], axis=0)
Out[46]:
total_bill | tip | sex | smoker | day | time | size | total | smoker_str | |
---|---|---|---|---|---|---|---|---|---|
67 | 3.07 | 1.00 | Female | Yes | Sat | Dinner | 1 | 4.07 | Yes |
92 | 5.75 | 1.00 | Female | Yes | Fri | Dinner | 2 | 6.75 | Yes |
111 | 7.25 | 1.00 | Female | No | Sat | Dinner | 1 | 8.25 | No |
172 | 7.25 | 5.15 | Male | Yes | Sun | Dinner | 2 | 12.40 | Yes |
149 | 7.51 | 2.00 | Male | No | Thur | Lunch | 2 | 9.51 | No |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
182 | 45.35 | 3.50 | Male | Yes | Sun | Dinner | 3 | 48.85 | Yes |
156 | 48.17 | 5.00 | Male | No | Sun | Dinner | 6 | 53.17 | No |
59 | 48.27 | 6.73 | Male | No | Sat | Dinner | 4 | 55.00 | No |
212 | 48.33 | 9.00 | Male | No | Sat | Dinner | 4 | 57.33 | No |
170 | 50.81 | 10.00 | Male | Yes | Sat | Dinner | 3 | 60.81 | Yes |
244 rows × 9 columns
In [47]:
#'지급액' 열을 기준으로 내림차순 정렬
tips.sort_values(by=['total_bill'], axis=0, ascending=False)
Out[47]:
total_bill | tip | sex | smoker | day | time | size | total | smoker_str | |
---|---|---|---|---|---|---|---|---|---|
170 | 50.81 | 10.00 | Male | Yes | Sat | Dinner | 3 | 60.81 | Yes |
212 | 48.33 | 9.00 | Male | No | Sat | Dinner | 4 | 57.33 | No |
59 | 48.27 | 6.73 | Male | No | Sat | Dinner | 4 | 55.00 | No |
156 | 48.17 | 5.00 | Male | No | Sun | Dinner | 6 | 53.17 | No |
182 | 45.35 | 3.50 | Male | Yes | Sun | Dinner | 3 | 48.85 | Yes |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
149 | 7.51 | 2.00 | Male | No | Thur | Lunch | 2 | 9.51 | No |
111 | 7.25 | 1.00 | Female | No | Sat | Dinner | 1 | 8.25 | No |
172 | 7.25 | 5.15 | Male | Yes | Sun | Dinner | 2 | 12.40 | Yes |
92 | 5.75 | 1.00 | Female | Yes | Fri | Dinner | 2 | 6.75 | Yes |
67 | 3.07 | 1.00 | Female | Yes | Sat | Dinner | 1 | 4.07 | Yes |
244 rows × 9 columns
In [48]:
#열 이름을 (알파벳 순서로) 정렬하기
tips.sort_index(axis=1)
Out[48]:
day | sex | size | smoker | smoker_str | time | tip | total | total_bill | |
---|---|---|---|---|---|---|---|---|---|
0 | Sun | Female | 2 | No | No | Dinner | 1.01 | 18.00 | 16.99 |
1 | Sun | Male | 3 | No | No | Dinner | 1.66 | 12.00 | 10.34 |
2 | Sun | Male | 3 | No | No | Dinner | 3.50 | 24.51 | 21.01 |
3 | Sun | Male | 2 | No | No | Dinner | 3.31 | 26.99 | 23.68 |
4 | Sun | Female | 4 | No | No | Dinner | 3.61 | 28.20 | 24.59 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
239 | Sat | Male | 3 | No | No | Dinner | 5.92 | 34.95 | 29.03 |
240 | Sat | Female | 2 | Yes | Yes | Dinner | 2.00 | 29.18 | 27.18 |
241 | Sat | Male | 2 | Yes | Yes | Dinner | 2.00 | 24.67 | 22.67 |
242 | Sat | Male | 2 | No | No | Dinner | 1.75 | 19.57 | 17.82 |
243 | Thur | Female | 2 | No | No | Dinner | 3.00 | 21.78 | 18.78 |
244 rows × 9 columns
In [49]:
#행 합계를 구할 때
tips.sum(axis=1)
Out[49]:
0 38.00
1 27.00
2 52.02
3 55.98
4 60.40
...
239 72.90
240 60.36
241 51.34
242 41.14
243 45.56
Length: 244, dtype: float64
In [50]:
#열 합계 구할 때 -> group by 분석
tips.sum()
Out[50]:
total_bill 4827.77
tip 731.58
size 627
total 5559.35
smoker_str NoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo...
dtype: object
Axis(축) 설정¶
- axis=0 (index) 행 지정
- mean 행 평균 구하기
- drop 행 삭제
- rank 행 순위 구하기
- axis=1 (columns) 열 지정
- mean 열 평균 구하기
- drop 열 삭제
- rank 열 순위 구하기
In [51]:
#tips 데이터 유형 확인
#tips 데이터의 범주형 변수는 sex, smoker, day, time 4개
In [52]:
tips.dtypes
Out[52]:
total_bill float64
tip float64
sex category
smoker category
day category
time category
size int64
total float64
smoker_str object
dtype: object
In [53]:
#성별 범주형 빈도분석
tips['sex'].value_counts()
Out[53]:
Male 157
Female 87
Name: sex, dtype: int64
In [54]:
#요일별 범주형 빈도분석#tips 데이터 유형 확인
#tips 데이터의 범주형 변수는 sex, smoker, day, time 4개
tips['day'].value_counts()
Out[54]:
Sat 87
Sun 76
Thur 62
Fri 19
Name: day, dtype: int64
In [55]:
#성별, 요일별 교차분석
pd.crosstab(tips['sex'], tips['day'])
Out[55]:
day | Thur | Fri | Sat | Sun |
---|---|---|---|---|
sex | ||||
Male | 30 | 10 | 59 | 58 |
Female | 32 | 9 | 28 | 18 |
In [56]:
#여백 또는 누적값 cumulatives
pd.crosstab(tips['sex'], tips['day'], margins=True)
Out[56]:
day | Thur | Fri | Sat | Sun | All |
---|---|---|---|---|---|
sex | |||||
Male | 30 | 10 | 59 | 58 | 157 |
Female | 32 | 9 | 28 | 18 | 87 |
All | 62 | 19 | 87 | 76 | 244 |
In [57]:
#전체 빈도 비율 확인
pd.crosstab(tips['sex'], tips['day']).apply(lambda r: r/len(tips), axis=1)
Out[57]:
day | Thur | Fri | Sat | Sun |
---|---|---|---|---|
sex | ||||
Male | 0.122951 | 0.040984 | 0.241803 | 0.237705 |
Female | 0.131148 | 0.036885 | 0.114754 | 0.073770 |
In [58]:
#tips 데이터 유형 확인
#tips 데이터의 연속형 변수는 total_bill, tip, size 3개
tips.dtypes
Out[58]:
total_bill float64
tip float64
sex category
smoker category
day category
time category
size int64
total float64
smoker_str object
dtype: object
In [59]:
tips.describe()
Out[59]:
total_bill | tip | size | total | |
---|---|---|---|---|
count | 244.000000 | 244.000000 | 244.000000 | 244.000000 |
mean | 19.785943 | 2.998279 | 2.569672 | 22.784221 |
std | 8.902412 | 1.383638 | 0.951100 | 9.890116 |
min | 3.070000 | 1.000000 | 1.000000 | 4.070000 |
25% | 13.347500 | 2.000000 | 2.000000 | 15.475000 |
50% | 17.795000 | 2.900000 | 2.000000 | 20.600000 |
75% | 24.127500 | 3.562500 | 3.000000 | 27.722500 |
max | 50.810000 | 10.000000 | 6.000000 | 60.810000 |
반응형
'Computer Engineering > Big Data Analytics Using Python' 카테고리의 다른 글
[빅데이터 분석 프로젝트] 마크다운으로 따릉이 데이터 분석 보고서 작성하기 -Part 1 (0) | 2021.04.06 |
---|---|
[에러잡기] UnicodeDecodeError가 뜰 때 (0) | 2021.04.06 |
[빅데이터 분석 프로젝트] 마크다운으로 타이타닉 탑승객의 생존률 보고서 작성하기 -Part 1 (0) | 2021.03.16 |
[빅데이터 분석] 5. 데이터 클린징 (0) | 2021.03.15 |
[빅데이터 분석] 4. 데이터 보기 (0) | 2021.03.15 |