2016April Python学习笔记(pandas&echarts)

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-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__("\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 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学习

学习地址:

常用软件

翻墙:

安装pip:

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

安装jupyter:

$pip install jupyter
$jupyter notebook

安装使用jupyter(原来的notebook)

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页