convenient_store.csv 파일을 이용해서 서울시 편의점 데이터를 분석했다.

convenient_store.csv




사실 분석이라기 보다는 파이썬과 pandas, matplotlib를 사용하는 방법이라고 볼 수 있다.



=============================== Python ===============================

import pandas as pd


data = pd.read_csv('convenient_store.csv')  # 데이터 가져오기

data.info()  # 데이터 정보 확인

'''

<class 'pandas.core.frame.DataFrame'>

RangeIndex: 177 entries, 0 to 176

Data columns (total 7 columns):

area           177 non-null object

company        177 non-null object

hourly_wage    177 non-null int64

area1          177 non-null object

area2          177 non-null object

outlier        177 non-null int64

name           177 non-null object

dtypes: int64(2), object(5)

memory usage: 9.8+ KB

'''


print(data.describe())  # 요약. 숫자로 되어있는 자료만 요약이 된다.

'''

       hourly_wage  outlier

count   177.000000    177.0

mean   5787.627119      0.0

std     352.318646      0.0

min    5580.000000      0.0

25%    5580.000000      0.0

50%    5600.000000      0.0

75%    6000.000000      0.0

max    7500.000000      0.0

'''


print(data.hourly_wage.describe())  # 특정 컬럼에 대한 요약. 여기서는 hourly_wage컬럼에 대한 요약.

'''

count     177.000000

mean     5787.627119

std       352.318646

min      5580.000000

25%      5580.000000

50%      5600.000000

75%      6000.000000

max      7500.000000

Name: hourly_wage, dtype: float64

'''


print(data.area.describe())  # area 컬럼에 대한 요약

'''

count         177

unique        117

top       강남구 논현동

freq            7

Name: area, dtype: object

'해석'

총 갯수는 177개의 데이터, 117개의 개별 데이터와 이름이 동일한 데이터가 60개가 있다.

제일 많이 나온 데이터는 '강남구 논현동'이고 7회 등장했다.

'''


# 시급이 6000원 이상인 데이터만 추출

high_wage = data[data.hourly_wage >= 6000]

print(high_wage)

# high_wage컬럼을 내림차순으로 정렬한다. 오름차순은 ascending=1로 하면 된다.

print(high_wage.sort_values(by='hourly_wage', ascending=0))


# 마포구에 있는 편의점 중 시급이 6000원 이상인 데이터만 추출

# 구와 동은 area1, area2로 나뉘어 있음. 때문에 area1로 검색

b = data[(data.hourly_wage >= 6000) & (data.area1 == '마포구')]

print(b)


# company에 문자열 'CU'가 들어간 데이터만 추출

cu = data[data.company.str.contains('CU')]

print(cu)


# seoul 컬럼에 in seoul이라는 데이터를 추가

data['seoul'] = 'in seoul'

print(data.head())


# more_than_6000이라는 컬럼을 만들어 data.hourly_wage >= 6000인 boolean값을 저장한다.

data['more_than_6000'] = data.hourly_wage >= 6000

print(data.more_than_6000)

# more_than_6000 컬럼이 True인 것들만 요약

cu = data[data.more_than_6000 == True].describe()

print(cu)

'''

       hourly_wage  outlier

count    47.000000     47.0

mean   6275.531915      0.0

std     360.517795      0.0

min    6000.000000      0.0

25%    6000.000000      0.0

50%    6200.000000      0.0

75%    6500.000000      0.0

max    7500.000000      0.0

'''


# x > 6000 이면 A, 아니면 B 그룹으로 분류하는 함수

def more_than_6000(x):

    if x > 6000:

        return 'A Group'

    else:

        return 'B Group'


# data의 more_than_6000 컬럼에 위의 함수를 이용해 A,B 그룹으로 분리.

data['more_than_6000'] = data.hourly_wage.map(lambda x : more_than_6000(x))

print(data)


# more_than_6000 컬럼의 값이 True인 것들 중 area1, hourly_wage 컬럼만 따로 data2에 저장한다.

# 우리는 위에 A Group으로 저장했으므로 True가 아닌 A Group으로 지정해야 한다.

data2 = data[data.more_than_6000 == 'A Group'][['area1','hourly_wage']]

print(data2)

# data2를 hourly_wage 컬럼의 내림차순으로 정렬한다.

data2 = data2.sort_values(by='hourly_wage',ascending=0)

# data2를 data2.csv로 저장한다.

data2.to_csv('data2.csv', index=0)





# matplotlib.pyplot을 이용해서 data를 시각화한다.

import matplotlib.pyplot as plt

# hourly_wage를 히스토그램으로 표현한다. bins=10은 히스토그램의 그래프 넓이가 10이라는 듯

data.hourly_wage.hist(bins=10)

#만든 플롯을 띄운다.

plt.show()

# 박스플롯을 만든다. x축에 area1을 놓고 y축에 hourly_wage를 출력한다.

data.boxplot(column='hourly_wage', by='area1')

plt.show()  # 한글이 깨진다.


### 한글 깨짐을 해결해보기

import matplotlib

font_name = matplotlib.font_manager.FontProperties(fname='C:/windows/Fonts/malqun.ttf').get_name()

matplotlib.rc('font', family=font_name)

print(font_name)


# vert=False로 xy축을 바꿀 수 있다.

data.boxplot(column='hourly_wage', by='area1', vert=False)

plt.xticks(fontsize=10)  # x축의 폰트 크기를 바꾼다.

plt.yticks(fontsize=10)  # y축의 폰트 크기를 바꾼다.

plt.show()


=============================== Python ===============================



ref.
jsideas / 파이썬 초보 - pandas와 matplotlib을 활용한 간단 분석 part 1, part 2
http://jsideas.net/python/2015/08/10/histogram_tutorial.html



+ Recent posts