심심해서 하는 블로그 :: 심심해서 하는 블로그


가족들이 서울에 올라와서 경복궁 야간개장을 같이 관람했었는데, 우리 감자님이 상당히 기분이 안좋아 보이네요.


감 : "아.. 나도 가고 싶었는데..."

나 : "한번 찾아볼게 ㅎㅎㅎ"


매년마다 경복궁 야간 개장 예매에 실패했었는데, 혹시나 해서 찾아 봤는데 역시나!! 매진!! 

경복궁 야간개장은 9월에 성공하리라 다짐하고, 대안으로 선택한 창경궁 야간개장을 다녀왔어요


1. 예매방법

인터파크에서 창경궁 야간개장으로 검색하시면, 표를 예매할 수 있어요. 

2018년 창경궁의 야간개장 기간은 아래와 같아요. 2018년 7월은 끝나버렸으니, 아직 못가신 분들은 9월과 10월에 한 번 관람해보세요.


- 4월(궁중문화축전): 4. 28. ~ 5. 6. / 19:00 ~ 21:30(입장 마감 20:30) 

- 5월: 5. 20. ~ 6. 2. / 19:00 ~ 21:30(입장 마감 20:30) 

- 6월: 6. 17. ~ 6. 30. / 19:30 ~ 22:00(입장 마감 21:00) 

- 7월: 7. 22. ~ 8. 4. / 19:30 ~ 22:00(입장 마감 21:00) 

- 9월: 9. 16. ~ 9. 29. / 19:00 ~ 21:30(입장 마감 20:30) 

- 10월: 10. 21. ~ 11. 3. / 19:00 ~ 21:30(입장 마감 20:30)


입장료는 1000원이구요. 한복을 착용한 사람에 대해 무료로 입장 가능하지만 예매는 꼭 하셔야 해요.

현장에서 발권을 안 해줘요.






2. 가는 길

가는 길 때문에 정말 고생했어요. 창덕궁 안에 창경궁이 있으니까 광화문에서 걸어갔는데, 입구가 달라요.

낮에는 같은 입구로 들어가서 창경궁 쪽으로 갈 수 있는데, 창덕궁은 야간개장을 안해서 창덕궁 정문인 돈화문을 이용할 수 없어요. 네비게이션이나 지도로 찾으실 때 서울대학교병원이나 홍화문으로 검색을 해서 가세요. 창덕궁에서 하염없이 기다리는 두세분 본 거 같아요. 


3. 본격 관람



7시 40분쯤에 입장했는데, 아직 여름이라 조금 밝긴 했어요. 

그래서 저녁이라는 느낌보다는 새벽에 고궁을 다닌다는 느낌도 들었던거 같아요. 

경복궁보다 좋았던 점은 국악 공연을 해주는 것이였어요. 전통 악기로 재즈를 연주하는 세션이 있었는데, 전통악기에 좀 더 익숙해질 수 있었던거 같아요. 결코 전통악기들의 음색이 서양악기에 꿇리지 않다는걸 느꼈어요. 



연못을 따라 걷다보면 고궁과는 전혀 어울리지 않은 현대식 식물원이 있어요. 

우리나라 최초의 식물원인 창경궁 대온실인데요. 과거에 희귀한 열대 식물을 전시하던 곳을 지금은 각 종 천연기념물로 등록된 식물들을 전시해 놓았어요. 


7월 입장의 마지막 날에 표를 겨우 얻어서 다녀왔는데, 가을과 봄의 모습은 어떨지, 또 낮의 모습은 어떨지 궁금하네요. 

감자님도 매우 만족하고 갔답니다. 연인, 가족, 친구들끼리 이번 9월 10월에 한 번 다녀오는것은 어떠세요??


끝까지 글 읽어주셔서 감사합니다.

공감! 한 번 눌러주시면 글쓴이에게 정말 큰 동기부여가 됩니다. 감사합니다!!

,
Untitled

1. pandas 소개

데이터 분석할 때, 정말 효자 라이브러리입니다.

Python을 이용해서 데이터를 분석하는 프로젝트에서 유용하게 사용한 라이브러리입니다.

pandas는 DataFrame 이라는 자료형을 이용하여, 데이터를 저장하고 가공합니다.

In [1]:
import pandas as pd
import numpy as np

matrix = np.matrix([[1,3], [2,5]])
print("numpy.matrix : \n", matrix)

df = pd.DataFrame([[1,3], [2,5]])
print("pandas DataFrame :\n", df)
numpy.matrix : 
 [[1 3]
 [2 5]]
pandas DataFrame :
    0  1
0  1  3
1  2  5

DataFrame은 numpy matrix에서 Matrix 행의 속성 index 와 열의 속성 column 이 적용된 형태를 합니다.

데이터베이스 테이블이나 엑셀같은 표에 데이터를 저장하는 형태와 동일합니다.

numpy.matrix를 사용하면서 불편한 점은 행렬 내부의 원소를 접근할 때 반드시 index 단위로 접근해야 했습니다.

프로그램을 혼자 짤 때는 선택한 이 원소의 의미를 이해할 수 있지만, 함께하는 프로젝트에서는 코드를 이해하는데 어렵습니다.

(거기다 난도가 있는 통계적 알고리즘 구현까지 들어가면 통계베이스 없는 저같은 개발자는 일일히 실행해야 겨우 의미를 알게 되요)

하지만 pandas는 각각의 행과 열을 지정할 수 있어서, 선택하는 데이터가 어떤 속성을 가지는지 쉽게 이해가 가능합니다.

In [2]:
matrix = np.matrix([[1,3], [2,5]])
print("A의 수학 성적 : ", matrix[0,0])

df = pd.DataFrame([[1,3], [2,5]], columns=["math", "computer"], index=["A", "B"])
print("A의 수학 성적 : ", df.loc["A", "math"])
A의 수학 성적 :  1
A의 수학 성적 :  1

또한 DataFrame 클래스안의 메소드 만으로도 프로젝트에서 사용하는 합, 평균, 분산, 표준 편차 등의 단순 통계부터

데이터를 재구성하기 위한 이동 평균, 이동 합, Resample, Groupby와 시각화까지 지원합니다.

이번 시간에는 시각화 기능을 알아 보도록 해요.




2. 시각화

DataFrame의 plot을 이용하면 다양한 형태의 그래프를 그릴 수 있습니다.

numpy Matrix를 그래프로 그린다면 matplotlib 라이브러리를 사용해서 설정을 해야한다는 것에 비해면 엄청 간단한 방법으로 그래프를 그릴 수 있어요

DataFrame.plot.bar() : 막대 그래프

DataFrame.plot.line() : 선 그래프

DataFrame.plot.scatter(x, y) : 산포도 그래프

DataFrame.plot.box() : Box 그래프

앞서 사용한 A와 B의 성적표로 막대 그래프와 선 그래프를 그려 봅시다

In [3]:
""" %matplotlib inline : 주피터 노트북 설정 때문에 사용한 거에요, """ 
%matplotlib inline 

df.plot.bar()
df.plot.line()
df.plot.box()
Out[3]:
<matplotlib.axes._subplots.AxesSubplot at 0x1e284adb9b0>

데이터 수가 많으면 숫자로 보았을 때 데이터가 어떤 분포를 가지는지 쉽게 알 수 없는데, 간단하게 그래프를 그려서 확인할 수 있어요.

산포도 그래프는 sklearn 라이브러리에 있는 샘플 데이터로 한 번 그려볼게요

sklearn 라이브러리가 없다면 아나콘다 콘솔에 pip install sklearn 명령어로 설치하시고 진행해주세요

데이터 마이닝 수업에서 단골 손님으로 언급되는 Iris 데이터를 이용해서 산포도 그래프를 그려볼게요.

아래의 함수를 실행하여, 데이터를 적재합니다.

In [4]:
from sklearn.datasets import load_iris
iris = load_iris()
data = iris['data']
feature = iris['feature_names']
label = iris['target']

print("data의 타입 : ", type(data))

# numpy.ndarray데이터도 pandas DataFramed의 데이터로 적용이 가능합니다.
iris_df = pd.DataFrame(data, columns=feature)

# label 컬럼을 추가해줍니다.
iris_df.loc[:, "label"] = label
print(iris_df.head())
data의 타입 :  <class 'numpy.ndarray'>
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
0                5.1               3.5                1.4               0.2   
1                4.9               3.0                1.4               0.2   
2                4.7               3.2                1.3               0.2   
3                4.6               3.1                1.5               0.2   
4                5.0               3.6                1.4               0.2   

   label  
0      0  
1      0  
2      0  
3      0  
4      0  

sklearn 라이브러리는 통계 알고리즘을 담고 있는 라이브러리인데요.

샘플로 데이터를 담고 있어서 데이터를 수집하는데 신경을 덜 쓸 수 있어요.

numpy.ndarraypandas.DataFrame 간의 호환성도 좋아서 여러분이 작성한 알고리즘의 결과가 numpy.ndarray 형태라 하여도,

pandas DataFrame으로 변환하여 사용할 수 있답니다.

이제 scatter 함수로 산포도를 그러볼게요. x축과 y축으로 사용할 컬럼명을 매개변수로 반드시 넣어주셔야 합니다.

In [5]:
iris_df.plot.scatter(x="sepal length (cm)", y="label")
Out[5]:
<matplotlib.axes._subplots.AxesSubplot at 0x1e2829fa5c0>

그려 놓고 보니까 각각이 무엇을 의미하는지 해석하기가 힘드네요. 서로 구분할 수 있도록 색을 넣어 줍시다.

label에 따라 색을 적용하기위해 color라는 컬럼을 새로 만들었습니다.

In [6]:
# iris 컬럼의 label은 0과 1, 2로 구성되어 있습니다. 
# label 중에 0, 1, 2 값을 같는 index를 찾아 줍니다.
zero = iris_df[iris_df["label"] == 0].index
one = iris_df[iris_df["label"] == 1].index
two = iris_df[iris_df["label"] == 2].index

# 그리고 각각의 index에 따라서 색깔 데이터를 넣어 줍니다.
iris_df.loc[zero, "color"] = "r"
iris_df.loc[one, "color"] = "g"
iris_df.loc[two, "color"] = "b"

iris_df.plot.scatter(x="sepal length (cm)", y="label", c=iris_df['color'])
Out[6]:
<matplotlib.axes._subplots.AxesSubplot at 0x1e286a6f828>

pandas.DataFrame으로 간단하게 데이터 가시화를 해보았습니다.

마지막으로 여러 종류의 그래프를 한 곳에 그리는 방법도 공유해드릴게요.

In [7]:
ax = iris_df["sepal length (cm)"].plot.line(color='green')
ax_2 = iris_df["petal length (cm)"].plot.bar(ax=ax, color='red')

# x축에 사용할 라벨
ax_2.set_xticks(iris_df.index[0::10])
ax_2.set_xticklabels(iris_df.index[0::10], rotation=45)

# y축에 사용할 라벨을 지정합니다.
ax_2.set_ylabel("length(cm)")

ax_2.legend()
Out[7]:
<matplotlib.legend.Legend at 0x1e284aa0f28>

plot 메소드들은 Axes라는 좌표축 객체를 반환합니다.

ax.set_xticks() : x축의 간격을 지정합니다.

ax.set_xticklabels() : x축의 간격에 라벨을 지정합니다.

ax.set_ylabel() : y축의 라벨을 지정합니다.

ax.legend() : 범례를 그래프에 넣어줍니다.

긴글 읽어 주셔서 감사합니다.

도움이 되셨으면 공감 버튼 꼭 눌러주세요.


,

세상에나.. 드디어 애드고시 통과했어요 ㅠㅠ


반가워요 잘생긴 아저씨 ㅠㅠ 손가락 ㅠㅠ 팝콘님..


2016년에 이 블로그를 학교에서 공부한걸 정리하자는 목적으로 시작해서 현재까지 수차례 애드센스의 문을 두들겨 보았으나 항상 "컨텐츠 불충분"의 늪에서 벗어날 수 없었는데, 이번에 드디어 구글 애드센스 광고를 달았습니다. 저처럼 너무 광고를 개제하고 싶으나 컨텐츠 불충분의 늪에서 못 빠져나간 분들을 위해서 제가 겪어온 과정들을 소개해드리겠습니다.



1. 진짜 컨텐츠가 불충분한가?


2016년 블로그 초기에는 글은 짧고, 개발자 블로그 특징 상 소스 코드와 그림과 동영상이 주를 이루었습니다. 구글 애드센스 심사는 봇으로 이루어져서 사진과 동영상보다 글이 가지는 비중이 크다는 것 조차 모르고 신청했습니다. 결과는 


당연히 컨텐츠 불충분. 그 후 "게시물 수를 늘리면 되지 않을까?" 위해, 학교 보안 과제인 BOF 원정대의 풀이를 적는 컨텐츠를 진행했고, 18탄까지 클리어하면서 간단하게 풀이를 적은 후, 제출했지만 역시 컨텐츠 불충분 사유로 거절당했어요.



2. 양보다 질, 글자 수에 신경쓰기


그후로 좌절감을 맞보고 여러 사이트를 검색하며, 팁을 동냥했습니다. 모든 블로거들이 공통적으로 1000자 이상의 글을 쓸 것을 추천하였고, 기존의 글들을 수정하기보다 새로운 주제로 글을 작성하기 시작했어요. 기존의 글을 지우는 게 아까웠거든요. 소스 코드를 제외한 나머지 글들이 최소 700자는 넘게 적기위해 부단히 애를 썼습니다. 


그리고 문장의 모양을 이쁘게 보이기 위해 했던 개인적인 강박도 고치고자 애를 썼습니다.

예를 간단하게 들어볼게요.


에디터를 사용할 때 빨간 원처럼 글자 하나씩 남으면 상당히 언짢고 거슬려서 개행을 했었는데요. 구글 봇이 심사할 때, 혹시나 문장의 끝으로 이해를 할까봐. 잠깐의 언짢음을 참고 개행없이 글을 작성했습니다.


그리고 항상 문장의 끝을 ~입니다. ~였어요 등 완전한 문장 형태로 적고, ㅋㅋㅋ나 ㅠㅠㅠ 등 개발하면서 느낀 희노애락을 표현하는 표현을 삼가했습니다. 구글 봇이 갑 오브 갑이였기 때문에 그의 심기를 나쁘게해선 안되거든요.




그렇게 글을 작성한 뒤, 애드센스 신청 결과는?? 역시 컨텐츠 불충분!!



3. 맞춤법 띄어쓰기 검사 / 안 쓰는 카테고리 통합


대학생에서 직장인이 되면서 블로그를 관리하기가 상당히 어려울거 같아서 방치했습니다. 2018년 1월 글을 마지막으로요. 하필 배정받은 프로젝트도 시리즈로 작성하려고 했던 SpringBoot가 아닌 데이터 마이닝 프로젝트에 배정되어서 더욱 글을 쓰기가 힘들어 졌습니다.


그와중에 여자친구가 블로그를 시작했고, 책, 영화, 공연 리뷰와 데이트하면서 다닌 이곳저곳 리뷰를 했습니다. 글자 수를 신경쓰면서 최대한 길게 적어서, 애드센스도 두세차례 시도했습니다.


하지만 마찬가지 컨텐츠 불충분에 막혀 있었죠.



그리고 얼마전 애드센스를 재신청했는데, 된겁니다.. 3년을 블로그를 하면서 안되는걸 6개월 안에 해내다니 ㅠㅠ


비결을 들어 봤더니, 50개가 넘는 모든 포스팅을 맞춤법 검사와 띄어 쓰기 검사를 하여 일일히 수정했다는 겁니다.

저도 그거 듣고 모든 포스팅을 수정하진 않고 가장 최신의 13개의 글을 맞춤법 검사를 해서 글을 수정했습니다. 생각보다 많은 글이 띄어쓰기와 맞춤법이 맞지 않았다는걸 이제서야 확인을 한거죠.


그리고 사용 안하던 카테고리를 없애고 통합했습니다. 욕심이 많아서 이것저것 써보겠다고 벌려놓은 카테고리를 정리했습니다. 그리고 신청한 애드센스 결과는 앞에서 말했듯이 통과였습니다.


구글 봇이 컨텐츠의 주제를 스캔하기 때문에 맞춤법과 띄어쓰기는 필수적인 요소로 작용하는 듯 합니다. 이것저것 시도했지만 애드센스 획득이 힘들었다면, 하나의 주제에 대해 글을 길게 적고, 맞춤법과 띄어쓰기를 준수한 글을 적는다는 원칙하에 컨텐츠를 제작해보세요. 기존 블로그를 운영하는 분이라면 굳이 이전의 글을 지우지 않아도 최신의 글이 변별력이 있으면 기회를 주는 거 같아요. 


구글봇 마음을 알 수 없어서 미신처럼 떠도는 팁들 중에 하나지만, 한 번 시도해보시고, 다들 애드센스 광고 개제하기를 진심으로 바랍니다.





긴 글 읽어주셔서 감사합니다.

도움이 되셨으면 공감 버튼 눌러주세요. 공감은 가장 큰 힘이 됩니다.




,