python总结(201806-201808)

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
这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值