ネット上の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']