python总结(201806-201808)
主要总结近期工作和自学中的python知识点
- python的csv文件读写
- python的邮件发送
- python数据分析画图
- python数据分析的excle表格使用
- python爬虫
- 了解python机器学习
- 使用python3版本
其中大部分是在看书的实际练习,书名:
Python爬虫开发与项目实战.pdf
利用Python进行数据分析(目录,模糊).pdf
Python核心编程 第3版 中文版.pdf
机器学习的知识点来自于github:
https://github.com/Avik-Jain/100-Days-Of-ML-Code
数据分析的知乎帖子:
https://www.zhihu.com/question/29265587
python的csv文件读写
因为python的使用中常涉及到csv的读写,使用csv库,同时指出如何带有标签的数据展示:
import csv
from collections import namedtuple
headers=['ID','USERNAME','PASSWORD','AGE','COUNTRY']
rows=[(1001,'qieye','qyie_pass',24,'China'),
(1002,'mayr','mayr_pass',20,'usa'),
(1002,'uack','ack_pass',20,'usa')]
with open('qiye.csv','w',newline='') as f:
f_csv=csv.writer(f)
f_csv.writerow(headers)
f_csv.writerows(rows)
f.close()
with open('qiye.csv') as f:
f_csv=csv.reader(f)
headers=next(f_csv)
print(headers)
for row in f_csv:
print(row)
with open('qiye.csv') as f:
ff = csv.reader(f)
headings = next(ff)
Row = namedtuple('Row',headings)
for r in ff:
row=Row(*r)
print(row.USERNAME,row.PASSWORD)
print(row)
python的邮件发送
邮件发送需要使用到email和smtplib库,发送邮件之前需要先开启邮箱的stmp功能:
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib
def _format_addr(s):
name,addr=parseaddr(s)
return formataddr((Header(name,'utf-8').encode(),addr))
'''发件人地址密码'''
from_addr='xxxxx@163.com'
password='xxxxx'
'''目标邮件地址'''
to_addr='xxxxxxx@aliyun.com'
'''服务器地址'''
smtp_server='smtp.163.com'
'''设置邮件信息'''
msg=MIMEText('python 爬虫运行异常,异常信息xxxx','plain','utf-8')
msg['From']=_format_addr('一号爬虫<%s>' %from_addr)
msg['To']=_format_addr('管理员<%s>' %to_addr)
msg['Subject']=Header('一号爬虫运行状态','utf-8').encode()
print(msg)
'''发送邮件'''
server=smtplib.SMTP(smtp_server,25)
server.login(from_addr,password)
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()
python数据分析画图
其中python3的一些库名称都有所改变,需要自己导入;
world_country_codes.py
from pygal_maps_world.i18n import COUNTRIES
def get_country_code(country_name):
#根据指定国家,返回pygal使用的2个字母国别码
for code,name in COUNTRIES.items():
if name == country_name:
return code
return None
world_population.py
import json
import pygal
from pygal.style import LightColorizedStyle,RotateStyle
from world_country_codes import get_country_code as gcd
"""将数据加到列表"""
filename ='resources/population-estimates_json.json'
with open(filename) as f:
pop_data = json.load(f)
"""打印每个国家人口"""
cc_populations={}
for pop_dict in pop_data:
if pop_dict['year']=='2010':
#"region": "WORLD"
country_name =pop_dict['region']
population = int(float(pop_dict['population']))
code =gcd(country_name)
if code:
cc_populations[code] = population
# print(code+':'+str(population))
# else:
# print('ERROR--'+country_name)
#根据人口,分成3组
cc_pops_1,cc_pops_2,cc_pops_3 ={},{},{}
for cc,pop in cc_populations.items():
if pop<10000000:
cc_pops_1[cc]=pop
elif pop<1000000000:
cc_pops_2[cc] =pop
else:
cc_pops_3[cc]=pop
print(len(cc_pops_1),len(cc_pops_2),len(cc_pops_3))
wm_style=RotateStyle('#336699',base_style=LightColorizedStyle)
wm=pygal.maps.world.World(style=wm_style)
wm.title="World Population in 2010,by Country"
wm.add('0-10m', cc_pops_1)
wm.add('10m-1bn', cc_pops_2)
wm.add('>1bn', cc_pops_3)
wm.render_to_file("world_population.svg")
结果:
生产的svg文件:world_population.svg,用浏览器打开:
根据多个骰子的结果统计概率图:
还有数据漫步:
python数据分析的excle表格使用
需要根据数据进行分析,编写数据分析报告,汇报;
主要是使用数据导出数据csv,然后保存到excel中做数据分析,对数据进行清理统计,主要涉及各种excel的各种函数(if,countifs,left,分列,定位,筛选,排序,匹配等),及数据透视表和数据透视图
python爬虫
爬虫只是在看书,了解思路,前期各种小的知识点已将有大致了解,一个图片下载的小爬虫:
import urllib
from lxml import etree
import requests
import urllib.request
def schedule(blocknum,blocksize,totalsize):
per = 100.0 *blocknum*blocksize/totalsize
if per >100:
per =100
print('当前下载精度:%.2f%%' %per)
user_agent='Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
headers={'User-Agent':user_agent}
# r=requests.get('http://www.ivsky.com/tupian/ziranfengguang/',headers=headers)
r=requests.get('http://www.ivsky.com/tupian/qinwenjiewen_t19482/',headers=headers)
# http://www.ivsky.com/bizhi/dongman_1920x1080/
html=etree.HTML(r.text)
print(html)
img_urls=html.xpath('.//img/@src')
print(img_urls)
i=0
for img_url in img_urls:
namejpg=img_url.split('/')
id = len(namejpg)-1
namejpg=namejpg[id].split('.')[0]
print(namejpg)
urllib.request.urlretrieve(img_url,'D:\python-image\img'+namejpg+'.jpg',schedule)
# i+=1
了解python机器学习
了解机器学习,目前拙见:收集数据,清洗数据,建立模型,根据数据分析各种数学模型的归纳—类似于将数据找到符合的数学模型,然后预测以后的数据分布;
在github上有童鞋将英文版翻译成中文:
https://github.com/MachineLearning100/100-Days-Of-ML-Code