【pythonによるデータ分析】準備とインスタンス(一)
私はもう本のipynbを共有したので、私と一緒に実験しましょう.ipynb形式のファイルをどのように開くか分からないなら、大丈夫です.anaconda 3はすべてをもっと簡単にします(私は広告をしているようです).
anacondaをインストールしてから、最初からフォルダを見つけることができます.中にはJupyter Notebookがあります.それです.クリックしてから、cmdの黒いウィンドウをポップアップして、それからブラウザがホームページをポップアップして、それでは起動に成功しました(ここではcmdの黒いウィンドウを消さないで、最小化すればいいです)、そのホームページは一般的に“私のドキュメント”に位置して、だから、便宜上、あなたがダウンロードしたipynbファイルを“私のファイル”の下に置いて、フォルダに解凍してブラウザの中でクリックして見ることができます.
私たちはデータを処理して、基本的に以下のいくつかの大きな任務を完成しなければなりません.外部と対話し、様々なファイルフォーマットとデータベース を読み書きする.は、分析 を行うために、データを整理、修正、統合、規範化、再成形、スライススライス、変形などの処理を行う準備をする.変換して、データセットに対していくつかの数学と統計演算をして、新しいデータセットを生成します.例えば、パケット変数に基づいて大きなテーブルを集約する .モデリングおよび計算、統計モデル、機械学習アルゴリズム、または他の計算ツールにデータを関連付ける は、インタラクティブまたは静的なピクチャまたは文字の要約 を作成することを示す.
bitからlyの1.usa.govデータ
2011年、URL短縮サービスbit.lyはアメリカ政府のウェブサイトusa.govと協力して、生成を提供した.govまたは.milショートリンクのユーザーから収集された匿名データ.リアルタイムデータのほか、テキスト形式の1時間あたりのスナップショットをダウンロードすることもできます.1時間あたりのスナップショットを例にとると、ファイル内の各行のフォーマットはJSONです.
たとえば、ファイルの最初の行だけを読み込むと、次のようになります.
出力結果は次のとおりです.
jsonファイルを読み込んだ後、リスト導出式でファイルをリストに変換できます.以下はリストとリストを読み込む操作です.
以下は出力の結果です
タイムゾーンをカウントし、データセットで最も頻繁に発生するタイムゾーン(すなわちtzフィールド)を知りたいとします.
出力結果:
最もよく見られる10個のタイムゾーンの水平棒グラフコード:
次に、中の「a」フィールドを見てみましょう.文字列関数と正規表現で中の情報を解析し、最もよく使われるいくつかのブラウザを統計します.
出力結果:
最も一般的な8つのブラウザの水平棒グラフコード:
次に、中の「a」フィールドを見て、windowsと非windowsユーザーによるタイムゾーン統計の分析を続けます.
出力結果:
最後に、さっきの操作に続いて、最もよく現れるタイムゾーンを選択します.コードは次のとおりです.
出力結果:
スタックバーで表示:
anacondaをインストールしてから、最初からフォルダを見つけることができます.中にはJupyter Notebookがあります.それです.クリックしてから、cmdの黒いウィンドウをポップアップして、それからブラウザがホームページをポップアップして、それでは起動に成功しました(ここではcmdの黒いウィンドウを消さないで、最小化すればいいです)、そのホームページは一般的に“私のドキュメント”に位置して、だから、便宜上、あなたがダウンロードしたipynbファイルを“私のファイル”の下に置いて、フォルダに解凍してブラウザの中でクリックして見ることができます.
私たちはデータを処理して、基本的に以下のいくつかの大きな任務を完成しなければなりません.
bitからlyの1.usa.govデータ
2011年、URL短縮サービスbit.lyはアメリカ政府のウェブサイトusa.govと協力して、生成を提供した.govまたは.milショートリンクのユーザーから収集された匿名データ.リアルタイムデータのほか、テキスト形式の1時間あたりのスナップショットをダウンロードすることもできます.1時間あたりのスナップショットを例にとると、ファイル内の各行のフォーマットはJSONです.
たとえば、ファイルの最初の行だけを読み込むと、次のようになります.
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
open(path).readline()
出力結果は次のとおりです.
'{ "a": "Mozilla\\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\\/535.11 (KHTML, like Gecko) Chrome\\/17.0.963.78 Safari\\/535.11", "c": "US", "nk": 1, "tz": "America\\/New_York", "gr": "MA", "g": "A6qOVH", "h": "wfLQtf", "l": "orofrog", "al": "en-US,en;q=0.8", "hh": "1.usa.gov", "r": "http:\\/\\/www.facebook.com\\/l\\/7AQEFzjSi\\/1.usa.gov\\/wfLQtf", "u": "http:\\/\\/www.ncbi.nlm.nih.gov\\/pubmed\\/22415991", "t": 1331923247, "hc": 1331822918, "cy": "Danvers", "ll": [ 42.576698, -70.954903 ] }
'
jsonファイルを読み込んだ後、リスト導出式でファイルをリストに変換できます.以下はリストとリストを読み込む操作です.
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line) for line in open(path)]
records[0]
records[0]['tz']
以下は出力の結果です
{'a': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11',
'al': 'en-US,en;q=0.8',
'c': 'US',
'cy': 'Danvers',
'g': 'A6qOVH',
'gr': 'MA',
'h': 'wfLQtf',
'hc': 1331822918,
'hh': '1.usa.gov',
'l': 'orofrog',
'll': [42.576698, -70.954903],
'nk': 1,
'r': 'http://www.facebook.com/l/7AQEFzjSi/1.usa.gov/wfLQtf',
't': 1331923247,
'tz': 'America/New_York',
'u': 'http://www.ncbi.nlm.nih.gov/pubmed/22415991'}
'America/New_York'
タイムゾーンをカウントし、データセットで最も頻繁に発生するタイムゾーン(すなわちtzフィールド)を知りたいとします.
from pandas import DataFrame
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line) for line in open(path)]
frame=DataFrame(records)
tz_counts=frame['tz'].value_counts()
#print(tz_counts[:10])
#
clean_tz=frame['tz'].fillna(value='Missing')
clean_tz[clean_tz ==''] = 'Unknown'
tz_counts=clean_tz.value_counts()
print(tz_counts[:10])
出力結果:
America/New_York 1251
Unknown 521
America/Chicago 400
America/Los_Angeles 382
America/Denver 191
Missing 120
Europe/London 74
Asia/Tokyo 37
Pacific/Honolulu 36
Europe/Madrid 35
Name: tz, dtype: int64
最もよく見られる10個のタイムゾーンの水平棒グラフコード:
from matplotlib import pyplot as plt
tz_counts[:10].plot(kind='barh',rot=0)
plt.show()
次に、中の「a」フィールドを見てみましょう.文字列関数と正規表現で中の情報を解析し、最もよく使われるいくつかのブラウザを統計します.
from pandas import DataFrame,Series
from matplotlib import pyplot as plt
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line) for line in open(path)]
frame=DataFrame(records)
results=Series([x.split()[0] for x in frame.a.dropna()])
print(results.value_counts()[:8])
出力結果:
Mozilla/5.0 2594
Mozilla/4.0 601
GoogleMaps/RochesterNY 121
Opera/9.80 34
TEST_INTERNET_AGENT 24
GoogleProducer 21
Mozilla/6.0 5
BlackBerry8520/5.0.0.681 4
dtype: int64
最も一般的な8つのブラウザの水平棒グラフコード:
res_cnt=results.value_counts()[:8]
res_cnt.plot(kind='barh',rot=0)
plt.show()
次に、中の「a」フィールドを見て、windowsと非windowsユーザーによるタイムゾーン統計の分析を続けます.
from pandas import DataFrame,Series
from matplotlib import pyplot as plt
import json
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
records = [json.loads(line) for line in open(path)]
frame=DataFrame(records)
cframe=frame[frame.a.notnull()]
# print(cframe.groupby('tz').size()) tz , 521
operating_system=np.where(cframe['a'].str.contains('Windows'),'Windows','Not Windows')
cframe['a']=DataFrame(operating_system)
by_tz_os=cframe.groupby(['tz','a'])
agg_counts=by_tz_os.size().unstack().fillna(0) # unstack
print(agg_counts[:10])
出力結果:
a Not Windows Windows
tz
180.0 316.0
Africa/Cairo 1.0 2.0
Africa/Casablanca 0.0 1.0
Africa/Ceuta 1.0 1.0
Africa/Johannesburg 0.0 1.0
Africa/Lusaka 1.0 0.0
America/Anchorage 0.0 4.0
America/Argentina/Buenos_Aires 0.0 1.0
America/Argentina/Cordoba 1.0 0.0
America/Argentina/Mendoza 0.0 1.0
最後に、さっきの操作に続いて、最もよく現れるタイムゾーンを選択します.コードは次のとおりです.
#
indexer = agg_counts.sum(1).argsort()
# take 10
count_subset = agg_counts.take(indexer)[-10:]
print(count_subset)
出力結果:
a Not Windows Windows
tz
America/Sao_Paulo 12.0 21.0
Europe/Madrid 15.0 19.0
Pacific/Honolulu 10.0 25.0
Asia/Tokyo 14.0 23.0
Europe/London 32.0 40.0
America/Denver 56.0 125.0
America/Los_Angeles 122.0 247.0
America/Chicago 131.0 249.0
180.0 316.0
America/New_York 426.0 798.0
スタックバーで表示:
count_subset.plot(kind='barh',stacked=True)
plt.show()