[英]Data cleaning in a csv file using python
嗨,我正在處理具有幾列的csv文件。 其中一欄是地址,格式如下:
10515,東北地區第115位,胡安妮塔,柯克蘭,金縣,華盛頓州,98033,美國
我想根據(,)拆分每一列,並為每個單位(例如單位,街道,州,郵政編碼等)創建新的相關列...
我能夠基於(,)拆分它們,現在每次拆分都有一列。
問題在於該數據不一致,拆分后得到的總列為10。但是數據順序不同。 一些記錄如下:
3008,38th Avenue Southwest,西西雅圖,西雅圖,金縣,華盛頓,98126,美國
23098,Northeast 130th Street,Trilogy,Union Hill-Novelty Hill,Novelty,金縣,華盛頓州,98053,美國
消防局34,633,East 32nd Avenue East,Broadmoor,華盛頓公園,西雅圖,金縣,華盛頓州,98112,美國
基本上,不是每個記錄都具有全部10種信息,並且不一定具有相同的順序。
清除此類數據的最佳方法是什么? 我最終希望根據數據表示的方式將數據放入相關列,例如城市是否在城市列下,郵政編碼是否移至郵政編碼列等。
我正在使用Python 2.0。
希望能得到一個好的解決方案。 謝謝!
我將使用庫usaddress
將地址分解為其組成部分。
https://usaddress.readthedocs.io/en/latest/
>>> import usaddress
>>> usaddress.tag('Robie House, 5757 South Woodlawn Avenue, Chicago, IL 60637')
(OrderedDict([
('BuildingName', 'Robie House'),
('AddressNumber', '5757'),
('StreetNamePreDirectional', 'South'),
('StreetName', 'Woodlawn'),
('StreetNamePostType', 'Avenue'),
('PlaceName', 'Chicago'),
('StateName', 'IL'),
('ZipCode', '60637')]),
'Street Address')
>>> usaddress.tag('State & Lake, Chicago')
(OrderedDict([
('StreetName', 'State'),
('IntersectionSeparator', '&'),
('SecondStreetName', 'Lake'),
('PlaceName', 'Chicago')]),
'Intersection')
>>> usaddress.tag('P.O. Box 123, Chicago, IL')
(OrderedDict([
('USPSBoxType', 'P.O. Box'),
('USPSBoxID', '123'),
('PlaceName', 'Chicago'),
('StateName', 'IL')]),
'PO Box')
從那里,您可以查詢返回的字典並將其輕松放入熊貓DataFrame中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.