ネット上のcsvファイルをPythonで読み込んで「カラム」に分解する

ネット上のcsvファイルをPythonで読み込んで、「カラム」に分解してみる

テストデータとして、アメリカ地質調査所(USGS)が公開している、過去30日間のM4.5以上の地震csvリスト(http://earthquake.usgs.gov/earthquakes/feed/csv/4.5/month)を使用。

import urllib2
import csv
from StringIO import StringIO


opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YTB720; GTB6.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)')]


def get_earthquakes(data):
    lines = csv.reader( StringIO( data ) )
    fieldnames = next(lines)
    print fieldnames
    for line in lines:
        print line


url = 'http://earthquake.usgs.gov/earthquakes/feed/csv/4.5/month'
web = opener.open(url)
webdata = web.read()
web.close()
get_earthquakes(webdata)


実行結果

['DateTime', 'Latitude', 'Longitude', 'Depth', 'Magnitude', 'MagType', 'NbStations', 'Gap', 'Distance', 'RMS', 'Source', 'EventID', 'Version']
['2013-03-31T09:52:12.030+00:00', '-6.936', '129.581', '139.6', '4.5', 'mb', '44', '71', '2.0', '0.89', 'us', 'usb000fwy6', '1364725605806']
['2013-03-31T07:46:18.000+00:00', '38.868', '142.057', '37.1', '5.3', 'mb', '84', '119', '3.3', '0.90', 'us', 'usb000fwxu', '1364722188702']
['2013-03-31T07:02:37.030+00:00', '42.775', '46.853', '43.8', '4.6', 'mb', '75', '96', '1.9', '0.75', 'us', 'usb000fwxk', '1364716821231']
['2013-03-30T21:48:02.290+00:00', '-20.903', '176.583', '32.0', '5.0', 'mb', '67', '80', '8.0', '1.00', 'us', 'usb000fwtl', '1364682629755']
['2013-03-30T21:43:28.200+00:00', '40.453', '-125.233', '4.8', '4.5', 'Mw', '', '245', '0.7', '1.60', 'nc', 'nc71963385', '1364708037058']
['2013-03-30T20:04:49.520+00:00', '23.104', '95.950', '33.8', '5.0', 'mb', '103', '75', '4.1', '0.69', 'us', 'usb000fwr0', '1364677348774']
['2013-03-30T18:11:06.310+00:00', '0.591', '124.017', '153.1', '4.9', 'mb', '64', '90', '2.0', '1.39', 'us', 'usb000fwm1', '1364680276822']
['2013-03-30T18:03:47.210+00:00', '12.218', '143.902', '34.6', '5.4', 'mb', '322', '27', '1.7', '1.09', 'us', 'usb000fwlj', '1364679267274']
['2013-03-30T17:58:49.010+00:00', '-7.112', '129.269', '166.7', '4.5', 'mb', '44', '74', '2.2', '1.04', 'us', 'usb000fwlh', '1364676792613']
['2013-03-30T17:30:48.540+00:00', '-9.404', '-79.039', '43.9', '5.4', 'Mwb', '593', '24', '3.4', '0.85', 'us', 'usb000fwkl', '1364684373138']
['2013-03-30T11:41:43.330+00:00', '11.501', '-87.001', '51.0', '4.5', 'mb', '40', '154', '1.6', '1.05', 'us', 'usb000fwfb', '1364645322494']
['2013-03-30T05:31:24.630+00:00', '-20.348', '-177.905', '554.1', '4.5', 'mb', '221', '98', '4.6', '1.16', 'us', 'usb000fwcr', '1364626114335']
['2013-03-30T05:03:43.740+00:00', '-10.515', '123.712', '10.5', '4.6', 'mb', '75', '69', '0.9', '1.12', 'us', 'usb000fwc0', '1364623270935']
['2013-03-30T01:50:49.810+00:00', '9.955', '126.232', '90.4', '5.6', 'Mwb', '195', '42', '2.9', '0.80', 'us', 'usb000fwb9', '1364667107000']
['2013-03-30T00:50:18.230+00:00', '-23.864', '179.830', '544.1', '4.8', 'mb', '51', '95', '5.7', '0.92', 'us', 'usb000fwam', '1364608707446']
['2013-03-30T00:40:32.390+00:00', '-35.871', '-100.278', '10.0', '4.5', 'mb', '19', '225', '21.7', '0.84', 'us', 'usb000fwai', '1364605638545']
['2013-03-29T23:15:31.670+00:00', '-35.666', '-99.762', '9.7', '5.0', 'mb', '34', '153', '22.7', '1.47', 'us', 'usb000fw9h', '1364600659195']