2016April Python学习笔记


Git学习

git(/ɡɪt/,关于这个音频文件 音频(帮助·信息))是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools[6](一个类似Norton Commander界面的文件管理器)有所不同。维基百科

廖雪峰Git教程

1.本地提交

  • 第一步:$git init 把这个目录变成git可以管理的仓库
  • 第二步:$git add readme.txt
    Unix的哲学是“没有消息就是好消息”,说明添加成功。
  • 第三步:$git commit -m “wrote a readme file” 提交(本次提交的说明)
    (PS: commit之前需要add)

  • 常用git命令:

    • $git cat readme.txt 查看readme.txt内容
    • $git status 掌握仓库的当前状态
    • $git diff readme.txt
    • $git log 日志功能
    • $git log –pretty=oneline
    • $git reset –hard HEAD^ (回退到上一个版本)
    • $git reset –hard HEAD^ ^(回退到上上个版本)
    • $git reset –hard HEAD~100(回退到上100个版本)
    • $git reset –hard dc5f1d1(只要记得版本号就可以穿梭回到现代)
    • $git reflog (可以查看使用过的命令,版本)

2.撤销修改

1.还没add

  • $git checkout – readme.txt

2.add但是还没commit

  • $git reset HEAD readme.txt
  • $git checkout – readme.txt

3.已经commit

  • 版本回退$git reset –hard dc5f1d1

在本地删除文件,有两种选择:

  1. $git rm test.txt(版本库中也删除)
  2. $git checkout – test.txt(误删本地文件,从版本库中恢复)

3.远程仓库

利用github作为免费托管的git仓库~

  • 1.添加ssh key
  • 2.$ git remote add origin git@github.com:crazyM7/hello-python.git
    然后会提示:
    fatal: remote origin already exists.
  • 3.$ git remote rm origin 移除origin
  • 4.重复2
  • 5.$ git push -u origin master
    会提示:
    ! [rejected] master -> master (fetch first)
    error: failed to push some refs to ‘git@github.com:crazyM7/hello-python.git’
    PS:出现错误的主要原因是github中的README.md文件不在本地代码目录中
  • 6.可以通过如下命令进行代码合并【注:pull=fetch+merge】
    git pull –rebase origin master

PS:每次使用命令提交进行版本控制很麻烦,可以选择工具:SourceTree

附上mac简单命令:

  • $mkdir learngit 创建learngit文件夹
  • $cd learngit 进入learngit目录
  • $pwd 显示当前目录
  • $cd ~/Desktop 进入到桌面目录
  • $touch readme.txt 新建txt文档
  • $rm test.txt 删除文件
  • $cp readme.txt learngit 拷贝文件到laerngit目录

Python爬虫学习

学习地址:《Python爬虫学习系列教程》学习笔记
实战:
Python爬虫实战一之爬取糗事百科段子

使用urllib2库和正则表达式抓取静态新闻网站十篇英文新闻,并统计每篇文章tf-idf的top10保存到txt文件中:
刚学了几天python写的,代码写得很烂:

#coding=utf-8import math
import json
#coding=utf-8import urllib
import urllib2
import re
import string
import sys
import osurl = ['http://www.chinadaily.com.cn/china/2016-04/12/content_24471420.htm']
url.append('http://www.chinadaily.com.cn/china/2016-04/12/content_24470515.htm')
url.append('http://www.chinadaily.com.cn/business/2016-04/12/content_24457629.htm')
url.append('http://www.chinadaily.com.cn/business/2016-04/09/content_24397697.htm')
url.append('http://www.chinadaily.com.cn/business/2016-04/09/content_24397290.htm')
url.append('http://www.chinadaily.com.cn/business/chinadata/2016-03/16/content_23898438.htm')
url.append('http://www.chinadaily.com.cn/business/2016-04/12/content_24460897.htm')
url.append('http://www.chinadaily.com.cn/business/2016-04/12/content_24470803.htm')
url.append('http://www.chinadaily.com.cn/business/2016-04/12/content_24455437.htm')
url.append('http://www.chinadaily.com.cn/business/2016-04/12/content_24481250.htm')
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = {'User-Agent' : user_agent}try:for i in range(10):request = urllib2.Request(url[i],headers=headers)response = urllib2.urlopen(request)content = response.read().decode('utf-8')title_pattern = re.compile('div.*?Title_e">(.*?)</div>',re.S)title_items = re.findall(title_pattern,content)title_mypat = re.compile(r'<h1.*?>(.*?)</h1>')title_myitem = re.findall(title_mypat,title_items[0])filename = str(i+1)+'.txt'print filenamef = open(filename, 'w+')f.write(title_myitem[0])f.write('\n')pattern = re.compile('div.*?Content">.*?<table.*?</table>(.*?)<div.*?width',re.S)items = re.findall(pattern,content)mypat = re.compile(r'.*?<p>(.*?)</p>.*?')if(items.__len__()>0):myitem = re.findall(mypat,items[0])len = myitem.__len__()#a = []#for j in range(len):#a.append(re.split(r' |,|\(|\)|\.',str(myitem[j])))#print afor j in range(len):f.write(myitem[j])except urllib2.URLError,e:if hasattr(e,"code"):print e.codeif hasattr(e,"reason"):print e.reasont=0
Dict_idf ={}
Dict_tf = {}DicList =[]for j in range(10):f_name = str(j+1)+'.txt'f = open(f_name)mystr = f.read()f.close()#print mystr.__len__()len = mystr.__len__()#print lenstr_p = ""myarticle = []for i in range(len):if mystr[i]=='.' or mystr[i]==',':if i<len-1 and mystr[i+1]>='0' and mystr[i+1]<='9':str_p = str_p.__add__(mystr[i])elif str_p=="":continueelse:#print str_pmyarticle.append(str_p)str_p=""elif mystr[i]=='(' or mystr[i]==')' or mystr[i]==' ' or mystr[i]=='"':if str_p == "":continueelse:#print str_pmyarticle.append(str_p)str_p = ""else:str_p = str_p.__add__(mystr[i])#print myarticle.__len__()Dict_tf = {}for i in range(myarticle.__len__()):if not Dict_tf.has_key(myarticle[i]):Dict_tf[myarticle[i]] =1.0if not Dict_idf.has_key(myarticle[i]):Dict_idf[myarticle[i]] =1.0else:Dict_idf[myarticle[i]] +=1.0else:Dict_tf[myarticle[i]] +=1.0#print myarticle[i],Dict_tf[myarticle[i]]#print Dict_tf.__len__()DicList.append(Dict_tf)for k,v in Dict_tf.items():Dict_tf[k] = Dict_tf[k]/myarticle.__len__()#for k, v in Dict_tf.items():#print k,v
for k,v in Dict_idf.items():Dict_idf[k] = math.log(10.0/Dict_idf[k])
#for k,v in Dict_idf.items():#print k,vres = ""
res = res.__add__("{")
res = res.__add__("\n")
res = res.__add__("\t[\n")for j in range(10):Dictf_idf = DicList[j]for k,v in Dictf_idf.items():Dictf_idf[k] = Dictf_idf[k]*Dict_idf[k]Dictf_idf = sorted(Dictf_idf.iteritems(), key=lambda d: d[1], reverse=True)f_name = str(j+1)+'.txt'f = open(f_name)mystr = f.read()f.close()mytitle=""data= {}for i in range(mystr.__len__()):if mystr[i]=='\n':#print mytitleres = res.__add__("\t\tarticle_titile:\"")res = res.__add__(mytitle)res = res.__add__("\"\n")res = res.__add__("\t\t[\n")for tt in range(10):res = res.__add__("\t\t\t{\n")res = res.__add__("\t\t\t\tword:\"")res = res.__add__(Dictf_idf[tt][0])res = res.__add__("\"\n")res = res.__add__("\t\t\t\tvalue:")res = res.__add__(str(Dictf_idf[tt][1]))res = res.__add__("\n")res = res.__add__("\t\t\t}\n")res = res.__add__("\t\t]\n")else:mytitle = mytitle.__add__(mystr[i])res = res.__add__("\t]\n")
res = res.__add__("}")
#print reschangeflie = 'tf-idf.txt'
fp = open(changeflie,'w+')
fp.write(res)
fp.close()

后来学习了beautifulsoup之后,重新实现的代码:
使用Python爬取十篇新闻统计TF-IDF

beautiful soup学习:

学习地址:Python爬虫利器二之Beautiful Soup的用法


Pandas学习

Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。百度百科

学习地址:
- Python 数据分析包:pandas 基础
- 10minutes to pandas
- 10minutes to pandas中文版

Series 和 DataFrame 分别对应于一维的序列和二维的表结构。
pandas 约定俗成的导入方法如下:

from pandas import Series,DataFrame
import pandas as pd
  • Series 可以看做一个定长的有序字典。基本任意的一维数据都可以用来构造 Series 对象
  • DataFrame 是一个表格型的数据结构。DataFrame 的构造方法与 Series 类似,只不过可以同时接受多条一维数据源,每一条都会成为单独的一列

常用函数:

  • 切片:
df[:2]
df["one":"three"]
df.ix[:2,:3] #前两行三列
df.ix[:,"year":"year"]
  • 使用函数:
f = lambda x:x.max()-x.min()
df.apply(f,axis=0)
df.apply(f,axis=1)
  • 用numpy统计个数:
ucount = np.array(df['username']!='-1').sum()
  • 同时统计多列满足条件的个数:
subject_list = ['math','english','music']
count_list = (df[df['username']!='-1'].loc[:, subject_list]).apply(lambda x: (x > 0).sum(), axis=0)
for pos,x in enumerate(count_list):mydict[subject_list[pos]] = x
  • 统计单列不同分组的个数
didf = df[df['username']!=-1].groupby('sex')['id'].count()
mydict['man'] = didf['man']
mydict['woman'] = didf['woman']

Echarts学习

Echarts是数据可视化的神器
官网地址:http://echarts.baidu.com/

下面是简单的例子:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>ECharts</title><!-- 引入 echarts.js --><script src="echarts.min.js"></script>
</head>
<body><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="width: 600px;height:400px;"></div><script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));option = {title: {text: '到课率',subtext: '@monkey'},tooltip: {trigger: 'axis'},toolbox: {show: true,feature: {dataZoom: {},dataView: {readOnly: false},magicType: {type: ['line', 'bar']},restore: {},saveAsImage: {}}},xAxis:  {type: 'category',boundaryGap: false,data: ['6-9','6-10','6-11','6-12']//data: [{{ mydict['days']|join(',') }}]},yAxis: {type: 'value',axisLabel: {formatter: '{value} %'}},series: [{name:'到课率',type:'line',data:[80, 85, 87, 90],markPoint: {data: [{type: 'max', name: '最大值'},{type: 'min', name: '最小值'}]},markLine: {data: [{type: 'average', name: '平均值'}]}},]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);</script>
</body>
</html>

sphinx学习

学习地址:

  • 利用Sphinx轻松生成python代码的文档
  • sphinx将python的注释生成文档例子

常用软件

翻墙:

  • 1.shadowsocksX(代理软件)
  • 2.https://monocloud.net/(网站地址,出售服务器使用权) 35RMB/季

安装pip:

$wget https://bootstrap.pypa.io/get-pip.py
$sudo python get-pip.py

安装jupyter:

$pip install jupyter
$jupyter notebook

安装使用jupyter(原来的notebook)

2016April Python学习笔记(pandasecharts)相关推荐

  1. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  2. python学习笔记之编写readConfig读写配置文件

    python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客

  3. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  4. Python学习笔记一简介及安装配置

    Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...

  5. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  6. Python学习笔记(二):标准流与重定向

    Python学习笔记(二):标准流与重定向 - SamWei - 博客园 Python学习笔记(二):标准流与重定向 Posted on 2012-02-19 22:36 SamWei 阅读(176) ...

  7. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  8. python基本语法语句-python学习笔记:基本语法

    原标题:python学习笔记:基本语法 缩进:必须使用4个空格来表示每级缩进,支持Tab字符 if语句,经常与else, elif(相当于else if) 配合使用. for语句,迭代器,依次处理迭代 ...

  9. 廖Python学习笔记一

    1. 廖Python学习笔记 大的分类 如函数 用二级标题,下面的用三级 如输入输出 1.1.1. 输入输出 1.1.1.1. 输出 用 print() 在括号里加上字符串,就可以向屏幕上输出指定的文 ...

最新文章

  1. 单列索引和联合索引,有什么区别?
  2. java io删除文件_java IO 文件操作方法总结
  3. 计算机应用基础模块2客观题答案 文档,计算机应用基础网上形考答案模块2 Word 2010 文字处理系统客观题答案(精).doc...
  4. 虚幻四如何实现第一人称_虚幻周报20200930 | 双节快乐么么哒!
  5. Powershell管理系列(四)Lync server 2013 批量启用语音及分配分机号
  6. 【BZOJ5495】[十二省联考2019]异或粽子(主席树,贪心)
  7. 用VS运行程序错误,提示0x000007b
  8. AI 人工智能学习之微积分
  9. 微软.NET平台OA办公解决方案
  10. 万能的5款工具推进活动策划方案
  11. 雀巢咖啡旗下感CAFÉ推出高端鎏光咖啡;武田剥离中国大陆非核心业务至海森 | 美通企业日报...
  12. 聚搜-聚合搜索引擎网页模板
  13. SVD降维(相当好理解的文章)
  14. 盘点华为系工控企业——中国A股上市公司最多的创业体系
  15. Verilog-always语句
  16. APP瘦身大法--AndResGuard的使用
  17. 小白从零开始:小程序阿里云平台控制stm32(小程序篇)
  18. JavaScript ------ DOM(事件基础)
  19. python基础语法(mooc+小甲鱼)
  20. [附源码]计算机毕业设计贵港高铁站志愿者服务平台Springboot程序

热门文章

  1. php格式转换成docx,如何在PHP中修改.doc或.docx文件
  2. 有没有在线抠图网页版?这两个方法轻松制作
  3. 广州小学生米饭行为实验:米饭被大骂一个月会变臭
  4. 计量经济学计算机数据分析,如何用计量经济学作实证分析..doc
  5. ERP简单介绍(转)
  6. 【论文复现】中值滤波改进:Noise Adaptive Fuzzy Switching Median Filter(NAFSMF)
  7. 启航-后端-Java-总结2
  8. AliTigerTally wtoken算法分析
  9. appium java环境_Appium java 环境配置
  10. 小数乘以100后精度丢失