概述
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
在本地删除文件,有两种选择:
- $git rm test.txt(版本库中也删除)
- $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-8
import math
import json
#coding=utf-8
import urllib
import urllib2
import re
import string
import sys
import os
url = ['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 filename
f = 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 a
for j in range(len):
f.write(myitem[j])
except urllib2.URLError,e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
t=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 len
str_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=="":
continue
else:
#print str_p
myarticle.append(str_p)
str_p=""
elif mystr[i]=='(' or mystr[i]==')' or mystr[i]==' ' or mystr[i]=='"':
if str_p == "":
continue
else:
#print str_p
myarticle.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.0
if not Dict_idf.has_key(myarticle[i]):
Dict_idf[myarticle[i]] =1.0
else:
Dict_idf[myarticle[i]] +=1.0
else:
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,v
res = ""
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 mytitle
res = res.__add__("ttarticle_titile:"")
res = res.__add__(mytitle)
res = res.__add__(""n")
res = res.__add__("tt[n")
for tt in range(10):
res = res.__add__("ttt{n")
res = res.__add__("ttttword:"")
res = res.__add__(Dictf_idf[tt][0])
res = res.__add__(""n")
res = res.__add__("ttttvalue:")
res = res.__add__(str(Dictf_idf[tt][1]))
res = res.__add__("n")
res = res.__add__("ttt}n")
res = res.__add__("tt]n")
else:
mytitle = mytitle.__add__(mystr[i])
res = res.__add__("t]n")
res = res.__add__("}")
#print res
changeflie = '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学习笔记(pandas&echarts)2016April Python学习笔记的全部内容,希望文章能够帮你解决2016April Python学习笔记(pandas&echarts)2016April Python学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复