簡體   English   中英

使用python清理csv文件中的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM