入門ソーシャルデータ Part1 準備
こんな記事が出てはや2年。
http://www.publickey1.jp/blog/10/10_3.html
お仕事にも活かせそうなので
この本で勉強することにした。
Pythonでサクサク書いて動かす系の本で楽しいです!
まずは準備。
基本Mac Book Air (OSX 10.8.2)の中でやってく。支障来したら環境変える。
Python
最初からインストールされてる2.7.2
これも必要になったらバージョン切り替えて使えるようにする。
モジュール
最初に入れておく必要があるのは以下。
- numpy
- networkx
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
>>> import twitter help(twitter.Twitter)
または
$ pydoc twitter
>>> 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_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)