Python笔记

@2015-8-31

环境相关

Windows

pip install numpy/pandas等时都会报错

Python笔记_1.png

Download@vc9@2008

失败


Python笔记_2.png

原因只是因为下载的文件不全。

手动下载了numpy的安装包,包装成功后,pip install pandas也成功了。

一般不想编译安装python默认的许多都是x86的,一些包。

因为一些包的版本的问题,有时要降级安装一些版本,或指定一些安装版本

pip install ‘Markdown<2.0’

Pyodbc

一开始没重视,后来重新装的时候浪费了不少时间

yum install install unixodbc-dev
yum install gcc-c++
yum install python-devel
pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc

不同的环境还有不同的问题,所以如果要给测试和运维使用,一种方案是打包一个总的Python,然后剩下的把系统级的东西装一下

ubuntu的话用python-dev然后直接pip install即可

ref

sudo apt-get install freetds-dev

不同的源还会导致使用的名称不同

ipython+notebook

ref

pyzmq, jinja2, tornado

Python笔记_3.png

快捷键

命令模式和编辑模式

命令模式

Enter+Ctrl+Shift+Alt的组合

常用的:A⇒[当前单元前]插入单元格,X⇒剪切单元格,H⇒快捷键帮助页面,B⇒[当前单元后]插入单元格,C⇒复制单元格
V⇒复制单元格,Z⇒撤销,D⇒Delete,Shift+M⇒Merge单元格[Math里也是]

L⇒显示单元内的内容的行号,Y⇒ToCode,M⇒ToMarkDown,R⇒ToRaw[没有MarkDown渲染效果的文本]

选择单元:k⇒Previous, j⇒Next,把选择的单元上移或下移⇒Ctrl+K/J

暂时还有疑问的

O,Shift+O,Shift,Space,

编辑模式

按一个Enter进入单元的编辑模式

Esc/Ctrl+M⇒命令模式

Shift+Tab⇒Tooltip?

Ctrl + ] ⇒Indent, Ctrl + [ ⇒Dedent

Ctrl+Home/Up⇒go to cell start, Ctrl+End/Dow⇒go to cell end

Ctrl+Backspace⇒del word before, Ctrl+Del⇒del word after

Ctrl+Shift+Subtract⇒Split Cell

Alt+C⇒Comment[...同时会弹出Edge的Cortana侧边栏]

插件

安装MathJax

ipython的一大特点就是支持科学计算,为了能够方便地显示数学符号、公式,需要MathJax的支持。安装很简单,打开一个IPython的shell,然后键入如下代码:
from IPython.external.mathjax import install_mathjax
install_mathjax()

datahub

BasicManipulate

查看str模块的split的方法的文档

str.split.__doc__,输出的文档再打印一下,然后print _一下,就有更好的效果了,_这玩意在Mathematica里就是%引用上一个计算结果,在R语言里也有这种管道操作

Python笔记_4.png

一个中英文的教程

ref

dynamic typing⇔动态类型

Whetting Your Appetite

话说Whetting这个单词,,,

解释器

set path=%path%;C:\python27

quit(),exit()

chmod +x myscript.py

os.environ.get

str.split一个字符串为每个字符?相当于Characters⇒list

import re

re.split(‘(a)’,str)会保留分割符a, l=re.split(‘(.)’,str)会产生额外的许多‘’,如何删除呢?DeleteCases

remove只会删除一次

l_np=np.asarray(l)

Python笔记_5.png

l_np.function.tolist()⇒function=l_np[l_np[:]!=’’]

os.system(‘mkdir today’)

import shutil
shutil.copyfile(‘data.db’, ‘archive.db’)
shutil.move(‘/build/executables’, ‘installdir’)

import glob
glob.glob(‘*.py’)

# dates are easily constructed and formatted
from datetime import date
now = date.today()
now datetime.date(2003, 12, 2)
now.strftime(“%m-%d-%y. %d %b %Y is a %A on the %d day of %B.”) ‘12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.’
# dates support calendar arithmetic
birthday = date(1964, 7, 31)
age = now - birthday
age.days 14368

>>> from timeit import Timer
>>> Timer(‘t=a; a=b; b=t’, ‘a=1; b=2’).timeit()
0.57535828626024577
>>> Timer(‘a,b = b,a’, ‘a=1; b=2’).timeit()
0.54962537085770791

Python数据结构

Tuple

x=1,2,3,4

Python笔记_6.png

numpy.zeros((3,4))

写一个Python函数

Mathematica术语:定义一个函数,可以接受一些选项,并且可以【继承】自其他函数的选项。

Python怎么实现?搜索了一会,没找着,然后研究了一下参数类型,**这个字典类型的可以实现,因为支持函数式,所以传一个函数也比较方便

示例代码

__author__ = ‘hyper’
from File import *

def toCSV(f,file,**args):
    f(file,**args)

dir=os.getcwd()
df=pd.DataFrame(np.random.randn(4,4))
print df
toCSV(df.to_csv,dir+“/test1.csv”,mode=’a’,sep=’@’)
# toCSV(df.to_csv())

一些问题记录

嵌套字典的初始化

setdefault

可视化

matplotlib

add_subplot

OS

os.listdir(path)获得的是下一级中的目录和文件

os.path.walk()与os.walk()产生的文件名列表并不相同.os.path.walk()产生目录树下的目录路径和文件路径,而os.walk()只产生文件路径

目录操作

从一个目录获得不同层级的所有文件,相当于是FileNames的传参

中文的问题

py文件中含有中文的问题

# -*- coding: utf8 -*-

中文路径的问题

Python笔记_7.png

ref1