地域の人気レストランデータを使用してワードクラウドを作成する実習 - ハッシュスクレイパー

Matplotlib, Seaborn, Plotly, Bokeh, Altair와 같은 파이썬 데이터 시각화 라이브러리에 대한 정보를 확인하며 우리 동네 맛집 데이터를 시각화하고 크롤링하는 실습을 진행해보세요.

4
地域の人気レストランデータを使用してワードクラウドを作成する実習 - ハッシュスクレイパー

1. 데이터 시각화とクローリング

1.1. データ可視化とは?

データ可視化は複雑なデータやパターンを直感的に表現して理解しやすくするプロセスです。図、チャート、グラフなどさまざまな形式で情報を表現することができ、効果的な可視化はデータに隠れた洞察を発見するのに大きく役立ちます。

1.2. Pythonデータ可視化ライブラリの種類

1.2.1. Matplotlib(https://matplotlib.org/)

MatplotlibはPythonで2Dグラフを描画するために使用される基本的なライブラリです。

ラインプロット、スキャッタープロット、バーチャート、ヒストグラム、パイチャートなどさまざまなチャートやプロットスタイルが必要な時に使用します。プロットスタイリングに高い柔軟性を提供するため、一般的に最も広く活用されるライブラリと考えられます。そのため、他の可視化ライブラリの基盤となるライブラリです。

1.2.2. Seaborn(https://seaborn.pydata.org/)

SeabornはMatplotlibを基にした高度な可視化ライブラリです。

統計的データ可視化に重点を置いて使用されます。Matplotlibよりも優れたカラーパレット、テーマ、グラフィック要素を提供し、ヒートマップ、ペアプロット、バイオリンプロットなどさまざまなチャートをサポートします。

1.2.3. Plotly(https://plotly.com/python/)

Plotlyは対話的なグラフを生成するためのライブラリです。

ウェブ上での対話的プロット生成に最適化されています。PlotlyはD3.jsを基にしているため、さまざまなプラットフォームや言語でサポートされています。

1.2.4. Bokeh(https://bokeh.org/)

Bokehはより洗練された可視化を生成するためのPythonライブラリです。

動的なデータ可視化を生成してくれるため、ウェブを作成してプラットフォームで活用すると良いでしょう。最近では、何でも、動的であり、つまり反応性を示すことが重要になっているため、Bokehを使用するとより魅力的で美しいレポートを作成できます。

1.2.5. Altair(https://altair-viz.github.io/)

AltairはVegaとVega-Liteを基にしたPython専用の宣言型統計可視化ツールです。

Altairはグラフィック作業の複雑さから抜け出し、データの核心に焦点を当てるよう設計されています。Altairの主な特徴の1つはAltairのAPIです。これはVega-Liteの直感的で一貫した構文に基づいており、ユーザーが迅速に習得できます。この構造のおかげで、ユーザーは複雑なコードなしにデータを簡潔で美しく可視化することができます。

上記の5つは代表的ないくつかの可視化ライブラリであり、他にもさまざまなライブラリがリアルタイムでリリースされ、発展しています。1つだけを使用するのではなく、さまざまな可視化ライブラリを組み合わせて、データをより直感的に分析するのに役立てることをお勧めします。

次は、これらのライブラリの中で、トピックとして使用する 'ワードクラウド' を説明します。

2. ワードクラウド(Word Cloud)とは?

ワードクラウドはテキストデータ内の単語の頻度や重要度に応じて異なるサイズで表現する可視化手法です。単語の頻度が高いほど、その単語はクラウド内でより大きく表示されるため、非常に直感的と言えます。ワードクラウドを活用することで、テキストからどの単語やトピックが重要かを簡単に把握する利点があります。

2.1. 他の可視化ライブラリとの違い

先に紹介した可視化ライブラリと最も大きく異なる点は、テキストを基にしていることです。

前述のライブラリはすべて、構造化されたデータ(Excelなどで既にデータセットの形を持つデータ)を基にしていますが、ワードクラウドはユーザーがウェブ上でコメントやテキストデータを作成した場合、それらを分析して分割し、可視化するのに役立ちます。

3. 実践例

3.1. ハッシュスクレイパーログイン

ハッシュスクレイパーに登録してダッシュボードを確認すると、さまざまなクローリングボットがあります。これは、開発知識がない非専門家でも簡単かつ迅速にデータを収集できるようになります。サイトごとにさまざまなボットがあるため、必要なサイトを検索して活用すると良いでしょう。

3.2. ネイバーマップスクレイパーを見つける

今回はネイバーマップを活用するために、ネイバーマップを検索してからネイバーマップスクレイカードをクリックします。

3.3. 収集設定

キーワードを編集できるように該当部分と設定ボタンをクリックします。

ポップアップモーダルが表示されるので、「キーワード」に地域+トピックキーワードを入力してください。

最大収集数もユーザーが任意に選択できます。

継続的な自動収集が必要な場合は、収集サイクルを設定してください。保存してからデータ収集開始ボタンを押して開始してください。

3.4. 収集結果の確認

収集が進行すると、以下の画像のようにデータ収集開始ボタンの下に表示され始めます。

'view'ボタンをクリックすると、データの結果が表示されます。

'Excelダウンロード'をクリックすると、該当データをダウンロードできます。以下の画像はダウンロードした際に表示されるExcelファイルです。

3.5. データ読み込み

該当データをread_excelで読み込みます。

import pandas as pd
my_hometown_shop = pd.read_excel('../blog/네이버 지도 수집.xlsx')
my_hometown_shop

読み込んだデータの列(column)のうち、ワードクラウド作成に必要な 'カテゴリ' 列だけを残し、すべて削除してください。

my_hometown_shop_new= my_hometown_shop['카테고리']

データをフレーム化すると、上記のように行が見やすく整列されます。

3.6. ワードクラウドの適用

クリーンアップされたデータを使用してワードクラウドを適用してください。

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

sys_font = fm.findSystemFonts()
nanum_fonts = [f for f in sys_font if 'Nanum' in f]
path ='/Library/Fonts/NanumBarunpenRegular.ttf'

# 아까 언급했던 경로로 직접 설정합니다.
path = '/Library/Fonts/NanumBarunpenRegular.ttf'

wordcloud = WordCloud(width=800, height=800,
                      background_color='white',
                      max_words=200,
                      contour_width=3,
                      contour_color='steelblue',
                      font_path=path).generate(' '.join(my_hometown_shop['카테고리']))

plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

このワードクラウドを通じて、노량진の美味しいお店には生しらす、韓国料理が大きな割合を占めていることがわかります。

収集した地域グルメデータを使用してワードクラウドを作成すると、地域ごとの業種分布を直感的に確認できます。

さまざまな方法で活用してみてください。

この記事も一緒に読んでみてください:

データ収集、これからは自動化しましょう

コーディング不要で5分で開始・5,000以上のウェブサイトクローリング経験

無料で始める →

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

続きを読む

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.