数据分析的Python快速先导课 二

Python龙门阵

  • Python龙门阵
    • Python的包
    • 文件读写
    • 异常处理
    • 面向对象编程
    • 交换多个变量的值
    • Jupyter智能插件
    • 其他

Python龙门阵

梳理性总结。

Python的包

Python由module组成,module是PY文件,文件由语句组成,语句由对象和函数构成。小问题找函数,大问题找包。全新体验认准python.org。:)

  1. 下载包 ,Python自己用pypi.org服务器,pip用conda服务器。因此有些时候语句不一样。
  2. 导入包:导入用import语句,有三种写法。
    A.0 查看已经安装的包 pip list、conda list
    A conda install numpy/pip install numpy
    B pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ numpy (可以替换成其他的服务器,豆瓣,或者自己的大学)(比较快,比较稳定);
    C 自己下载后,得到whl文件,手动解压安装。 pip install 路径/the.file.whl
  • 包的更新 1)pip install numpy --upgrade 2)conda update numpy.
  • 删除 1)pip uninstall imageic
  1. 使用/调用包主要使用模块名、函数名。常用的本地模块,已经内置在里面了。如果是conda,需要自己先pip再安装。语句为模块名.函数名()。如果名字太长,用第二种写法:
 import 模块名 as 外号

 外号.函数()

部分外号是固定好了的。

还有第三种写法为:from 模块 import 函数。调用的时候不需要写模块名字,直接引用函数。

  1. 查找模块的下载路径。比如:
import sys
sys.path 
['',
 'C:\\Users\\yy\\Anaconda3\\python36.zip',
 'C:\\Users\\yy\\Anaconda3\\DLLs',
 'C:\\Users\\yy\\Anaconda3\\lib',
 'C:\\Users\\yy\\Anaconda3',
 'C:\\Users\\yy\\AppData\\Roaming\\Python\\Python36\\site-packages',
 'C:\\Users\\yy\\Anaconda3\\lib\\site-packages',
 'C:\\Users\\yy\\Anaconda3\\lib\\site-packages\\Sphinx-1.5.1-py3.6.egg',
 'C:\\Users\\yy\\Anaconda3\\lib\\site-packages\\win32',
 'C:\\Users\\yy\\Anaconda3\\lib\\site-packages\\win32\\lib',
 'C:\\Users\\yy\\Anaconda3\\lib\\site-packages\\Pythonwin',
 'C:\\Users\\yy\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.6.egg',
 'C:\\Users\\yy\\Anaconda3\\lib\\site-packages\\IPython\\extensions',
 'C:\\Users\\yy\\.ipython']
  1. 查询模块的所有函数
import sys
sys.builtin_module_names
  1. 所有的pip和conda在解释器里面写,不要在编译器里面写,否则容易pip到木马。交给别人的也要注释掉。
  2. 当前工作目录
import os
os.getcwd()
#修改
#os.chdir("E:\\ ")

出来的是jupyter文件存在的路径。
如果想把整体的文件的路径都改掉,比如说jupyter的目录。具体做法参考朝乐门老师工作室的教程。完全没有问题。

https://mp.weixin.qq.com/s/5kXgYYSOoTPn2AAu5eyLFA

jupyter notebook是一个很灵活的软件。

文件读写

数据分析的Python快速先导课 二_第1张图片

异常处理

数据分析的Python快速先导课 二_第2张图片try后面跟需要的语句,用except打补丁,并给出语音提示。
数据分析的Python快速先导课 二_第3张图片代码如下:

try:
    f = open('myfile.txt','w')
    while True:
        x = input("输入一个整数,若要停止请输入字母‘N’")
        if x.upper() == 'N':break#往下跳。continue重复上一个语句
        y = 100/int(x)
        f.write(str(y)+'\n')
        print(y)
except ZeroDivisionError:
    print("ZeroDivisionError")
except ValueError:
    print("ValueError")
finally:
    f.close()

有问题可以上官网检索exception

面向对象编程

变量的函数变量的定义封装在一起叫类。面向对象是一个封装,目的是为了再次调用。另一个大类下的小类进行定义的时候,可以继承。有些属性可以继承,publish的是可以继承的;属性是proteced的,外面的不能继承;private的。比较隐私,继承者无法继承。
python在做的过程中没有面向对象的概念,但是在用第三方的包的时候,往往会遇到别人用面向对象写的代码。
变量前面有一个下划线的,是proteced的,有两个下划线的,是private的。类其实是空的,因此要先实例化,把他定义成一个对象。python的实例化模板为:

p = person('tom',30)
p.say_hi()
class Person:
    #定义了三个变量
    nationnality = 'china'
    _deposit = 10e10#protected
    __gender = 'M'#private
    #函数1
    def __init__(self,name,age):#不能改
        self.name = input('创建您的昵称')#实例属性
        age = age#局部变量
    #函数2
    def say_hi(self):
        print(self.name)
        
#把tom和30传递给name,age
p1 = Person('Tom',30)#把person转化成p1的实例
p1.say_hi()
   
  • 面向对象里面self和class是不传数值的,self主要为了以后的赋值。
  • int()是个类,1、2、3是个对象
  • 函数__init__(self,name,age)的名字不能改,所有的函数都用这个命名,还有__new__(cls,name,age)_del_()两个。python俩面拿到类,瘦小调用new函数,得到类编程的对象,然后调用init,把对象转成实例,清除对象的析构函数为__del__(self)。python把对象切成两个部分,一个是对象,int后的叫实例。

像下面的案例,就不会把输入放在里面,不然会覆盖。一般都是在里面写静态的赋值。

#错误案例
class Person:
    #定义了三个变量
    nationnality = 'china'
    _deposit = 10e10#protected
    __gender = 'M'#private
    #函数1
    def __init__(self,name,age):#不能改
        #self.name = name
        #age = age
        self.name = input("新建您的昵称:")#实例属性
        self.age = input("设置角色的年龄:")#实例属性,局部变量的话应该写age = age
    #函数2
    def say_hi(self):
        print("您好!"+self.age+"岁的"+self.name)
        #print(self.name)
        
#p1 = Person('Tom',30)
#p1.say_hi()
p1 = Person(1,1)
p1.say_hi()
#待补充
@staticmethod
#静态函数的装饰器。
@classmethod
#类装饰器。

交换多个变量的值

x = 1
y = 2
z = 3
x,y,z = y,x,z
x,y,z
  • format 函数,如果对数据的显示不喜欢,可以看一下这个函数。
  • 魔术命令最后不能加注释

Jupyter智能插件

其他

  1. 画图
height = [1,11,111,1111,1111,1111,1,1,1,1,1,1,1,1,1]
weight = (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
import matplotlib.pyplot as plt
#在输出框里显示静态图。换成notebook,换成静态图。
%matplotlib inline 
plt.plot(height,weight)
plt.rcParams['font.family'] = 'DengXian'#画图的中文显示,设置为宋体
plt.xlabel("身高(英寸)")
plt.ylabel("体重(千克)")
plt.title("何以解忧唯有暴富")
  • 查看plot能使用的所有中文字体。
import matplotlib.font_manager
[f.name for f in matplotlib.font_manager.fontManager.ttflist]#列表推导式
  • 如果是好几大行的报错,是因为横坐标和纵坐标数值数目没对上。
  1. 取余并输出
mylist = [1,2,3,4,5,6,7,8,9,10]
filter(lambda x: x%3 ==0, mylist)#过滤函数#过滤条件,过滤对象#只有把%放在前面才是魔术命令
#filter函数是通过迭代的方式,从第二个参数里面读取送给第一个参数。x没有特意声明。
print(*filter(lambda x: x%3 ==0, mylist))
list(filter(lambda x: x%2 ==0, mylist))
#输出
3 6 9
[2, 4, 6, 8, 10]
  1. 查询包的格式
import pandas as pd
pd.__version__
  1. 改jupyter的主题
#jp 主题
#pip install jupyterthemes   #从网上下载
###pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ jupyterthemes#上一个,这个比较快
#jt-l  #查询是否真的安装了
#jt-1 chesterish
#jt-r  #恢复原来的白色设置
  • 取数据
#import numpy as np
a = range(1,7,1)#输出1234567
print(a[0:2:6])#输出1,3,5
#用numpy不规则地切 可以随意切,叫fancy Indexing
#print(a[[1,3,4]])#切出来第1,3,4列

你可能感兴趣的:(python)