DELAEMON BLOG

Live as if you were to die tomorrow. Learn as if you were to live forever.

入門ソーシャルデータ Part1 準備

こんな記事が出てはや2年。
http://www.publickey1.jp/blog/10/10_3.html

お仕事にも活かせそうなので
この本で勉強することにした。

Pythonでサクサク書いて動かす系の本で楽しいです!

まずは準備。
基本Mac Book Air (OSX 10.8.2)の中でやってく。支障来したら環境変える。

Python

最初からインストールされてる2.7.2
これも必要になったらバージョン切り替えて使えるようにする。

モジュール

最初に入れておく必要があるのは以下。

numpyインストール

$ sudo easy_install numpy
Searching for numpy
Best match: numpy 1.6.1
numpy 1.6.1 is already the active version in easy-install.pth

Using /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
Processing dependencies for numpy
Finished processing dependencies for numpy

networkxインストール

$ sudo easy_install networkx
Searching for networkx
Reading http://pypi.python.org/simple/networkx/
Reading http://networkx.lanl.gov/
Reading http://sourceforge.net/project/showfiles.php?group_id=122233
Reading http://networkx.lanl.gov/download/networkx
Reading http://networkx.lanl.gov/download
Reading http://networkx.lanl.gov
Reading https://networkx.lanl.gov
Best match: networkx 1.7
Downloading http://networkx.lanl.gov/download/networkx/networkx-1.7-py2.7.egg
Processing networkx-1.7-py2.7.egg
creating /Library/Python/2.7/site-packages/networkx-1.7-py2.7.egg
Extracting networkx-1.7-py2.7.egg to /Library/Python/2.7/site-packages
Adding networkx 1.7 to easy-install.pth file

Installed /Library/Python/2.7/site-packages/networkx-1.7-py2.7.egg
Processing dependencies for networkx
Finished processing dependencies for networkx

networkxお試し

$ python
Python 2.7.2 (default, Jun 20 2012, 16:23:33)-
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import networkx
>>> g = networkx.Graph()
>>> g.add_edge(1,2)
>>> g.add_node("spam")
>>> print g.nodes()
[1, 2, 'spam']
>>> print g.edges()
[(1, 2)]

#twitter api インストール https://github.com/sixohsix/twitter

$ sudo easy_install twitter
Searching for twitter
Reading http://pypi.python.org/simple/twitter/
Reading http://mike.verdone.ca/twitter/
Best match: twitter 1.9.0
Downloading http://pypi.python.org/packages/source/t/twitter/twitter-1.9.0.tar.gz#md5=d0fb380321f6765ab81c4b2932c26171
Processing twitter-1.9.0.tar.gz
Running twitter-1.9.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-xKwgcA/twitter-1.9.0/egg-dist-tmp-ACg0pO
Adding twitter 1.9.0 to easy-install.pth file
Installing twitter-log script to /usr/local/bin
Installing twitter script to /usr/local/bin
Installing twitterbot script to /usr/local/bin
Installing twitter-follow script to /usr/local/bin
Installing twitter-stream-example script to /usr/local/bin
Installing twitter-archiver script to /usr/local/bin

Installed /Library/Python/2.7/site-packages/twitter-1.9.0-py2.7.egg
Processing dependencies for twitter
Finished processing dependencies for twitter

twitter apiのドキュメントみる

>>> import twitter
help(twitter.Twitter)

または

$ pydoc twitter

twitter api お試し トレンドの取得

>>> import twitter
>>> twitter_api = twitter.Twitter()
>>> WORLD_WOE_ID = 1
>>> trends = twitter_api.trends._(WORLD_WOE_ID)
>>> [trend['name'] for trend in trends()[0]['trends']]
[u'#CosasQueHagoEnClases', u'#15FatosSobreMim', u'#NothingIsImpossible', u'#iWillNeverUnderstand', u'#EMAWinGaga', u'Keep Calm and Love Demi', u'Archie Goodwin', u'NossoOrgulhoMcGuime', u'Dick Vitale', u'Alex Len']

リスト内包表記はネストしたループよりパフォーマンスあがるらしい。

twitter api お試し 検索

>>> twitter_search = twitter.Twitter(domain="search.twitter.com")
>>> search_results = []
>>> for page in range(1,6):
>>>   search_results.append(twitter_search.search(q="LesPaul", rpp=100, page=page))
>>> import json
>>> print json.dumps(search_results, sort_keys=True, indent=1)