Python数据分析与机器学习实战(2)处理txt,csv,xsl,json,xml格式数据

如果需要数据,评论区留下邮箱!

Python IO与档案处理

f = open('tmp.txt','w')
f.write('hello world')
f.close()

使用with语句省去close()操作

with open('tmp.txt','w') as f:
    f.write('hello\nworld')
with open('tmp.txt','r') as f:
    print(f.read())
hello
world

将文本一行一行的输出,Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

with open('tmp.txt','r') as f:
    for line in f.readlines():
        print(line.strip())
hello
world

处理CSV,Excel格式数据

数据来源:国家数据近五年人口数

with open('data\population.csv','r')as f:
    for line in f.readlines():
        print(line)
指标,2017年,2016年,2015年,2014年,2013年

年末总人口(万人),139008,138271,137462,136782,136072

男性人口(万人),71137,70815,70414,70079,69728

女性人口(万人),67871,67456,67048,66703,66344

城镇人口(万人),81347,79298,77116,74916,73111

乡村人口(万人),57661,58973,60346,61866,62961

使用pandas库的dataframe结构能更好的操作这些数据

import pandas as pd
df = pd.read_csv('data\population.csv',encoding='ANSI')
df
指标 2017年 2016年 2015年 2014年 2013年
0 年末总人口(万人) 139008 138271 137462 136782 136072
1 男性人口(万人) 71137 70815 70414 70079 69728
2 女性人口(万人) 67871 67456 67048 66703 66344
3 城镇人口(万人) 81347 79298 77116 74916 73111
4 乡村人口(万人) 57661 58973 60346 61866 62961
import pandas as pd
df = pd.read_excel('data\population.xls',encoding='ANSI')
df
指标 2017年 2016年 2015年 2014年 2013年
0 年末总人口(万人) 139008 138271 137462 136782 136072
1 男性人口(万人) 71137 70815 70414 70079 69728
2 女性人口(万人) 67871 67456 67048 66703 66344
3 城镇人口(万人) 81347 79298 77116 74916 73111
4 乡村人口(万人) 57661 58973 60346 61866 62961

处理json格式数据

数据来源城市信息

with open('data\city.json','r',encoding='utf-8') as f:
    city=f.read()

从json格式转换成Python中的字典

import json
dic = json.loads(city)
dic
[{'Code': '414500',
  'Name': '郑州市',
  'level': [{'Code': '414500', 'Name': '二七区', 'sort': 1},
   {'Code': '414500', 'Name': '中原区', 'sort': 2}],
  'sort': 1},
 {'Code': '414530',
  'Name': '新乡市',
  'level': [{'Code': '414530', 'Name': '卫滨区', 'sort': 1},
   {'Code': '414530', 'Name': '牧野区', 'sort': 2}],
  'sort': 2}]
for city in dic:
    print(city.get('Code'),city.get('Name'))
414500 郑州市
414530 新乡市

将字典形式编码为 JSON 格式数据:

json.dumps(dic)
'[{"Code": "414500", "Name": "\\u90d1\\u5dde\\u5e02", "level": [{"Code": "414500", "Name": "\\u4e8c\\u4e03\\u533a", "sort": 1}, {"Code": "414500", "Name": "\\u4e2d\\u539f\\u533a", "sort": 2}], "sort": 1}, {"Code": "414530", "Name": "\\u65b0\\u4e61\\u5e02", "level": [{"Code": "414530", "Name": "\\u536b\\u6ee8\\u533a", "sort": 1}, {"Code": "414530", "Name": "\\u7267\\u91ce\\u533a", "sort": 2}], "sort": 2}]'

使用pandas库处理json数据

import pandas as pd
df = pd.read_json('data\city.json',encoding='utf-8')
df
Code Name level sort
0 414500 郑州市 [{'Code': '414500', 'Name': '二七区', 'sort': 1},... 1
1 414530 新乡市 [{'Code': '414530', 'Name': '卫滨区', 'sort': 1},... 2

处理xml格式数据

数据来源中国气象网北京天气,如下图

<city name="北京">
      <county id="010101" name="北京" weatherCode="101010100"/>
      <county id="010102" name="海淀" weatherCode="101010200"/>
      <county id="010103" name="朝阳" weatherCode="101010300"/>
      <county id="010104" name="顺义" weatherCode="101010400"/>
      <county id="010105" name="怀柔" weatherCode="101010500"/>
      <county id="010106" name="通州" weatherCode="101010600"/>
      <county id="010107" name="昌平" weatherCode="101010700"/>
      <county id="010108" name="延庆" weatherCode="101010800"/>
      <county id="010109" name="丰台" weatherCode="101010900"/>
      <county id="010110" name="石景山" weatherCode="101011000"/>
      <county id="010111" name="大兴" weatherCode="101011100"/>
      <county id="010112" name="房山" weatherCode="101011200"/>
      <county id="010113" name="密云" weatherCode="101011300"/>
      <county id="010114" name="门头沟" weatherCode="101011400"/>
      <county id="010115" name="平谷" weatherCode="101011500"/>
city>

对xml数据进行处理

import xml.etree.ElementTree as ET
tree = ET.parse('data\weathercode.xml')
root = tree.getroot()
root

for weather in root.iter('county'):
    print(weather.get('id'),weather.get('name'),weather.get('weatherCode'))
010101 北京 101010100
010102 海淀 101010200
010103 朝阳 101010300
010104 顺义 101010400
010105 怀柔 101010500
010106 通州 101010600
010107 昌平 101010700
010108 延庆 101010800
010109 丰台 101010900
010110 石景山 101011000
010111 大兴 101011100
010112 房山 101011200
010113 密云 101011300
010114 门头沟 101011400
010115 平谷 101011500

参考:基于Python数据科学挖掘精华实战课程

你可能感兴趣的:(Python数据分析与机器学习实战(2)处理txt,csv,xsl,json,xml格式数据)