《利用Python进行数据分析-第二版》2

第二章 Python语法 和 jupyter基础

常用库及命名

下面均为各种库的常用命名方式

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm
data = {i : np.random.randn() for i in range(7)}   # 类似于python字典生成式
data

结果

{0: -0.9009056139906951,
 1: -1.581682352812691,
 2: -0.5608536001755129,
 3: -1.2634011018284566,
 4: 0.4831433069203416,
 5: -0.2650450765907828,
 6: -0.7770227536257971}
%pwd   #打印当前路径

'D:\\Python\\datalearning\\Python for data analysis'

补全功能

  • 补全功能是下拉形式
  • 定义变量和Python关键字补全
  • 创建对象的方法和属性的补全
  • 模块的补全
  • 文件路径补全
  • 补全函数的关键词参数,包含等号
an_apple = 27
an_orange = 42
an   # 按下tab键会自动补全
image.png
b = [1, 2, 3]
b.   # 按下tab键,补全对象b的各种方法和属性
image.png
import datetime
datetime.  # 按下tab键
image.png
"D://python/datalearning/Python for data analysis"  # 路径补全

自省

使用问号?可以进行自省功能

  • 变量自省
  • 函数或者实例自省
b = [1, 3, 4]
b?
image.png
def add_number(a, b):
    return a + b

add_number?      #  一个问号:显示相关属性
add_number??    #  两个问号:显示源码
image.png
image.png

?问号的另一个功能:配合字符串匹配所有的名字

np.*load*?  # 星号代表所有,问号代表匹配

image.png

魔术命令

魔术命令是指在命令前面加上%前缀

  • %magic? 查看某个命令的用法
  • %run:用来所有的Python程序,也就是.py文件:%run hello.py
  • %load:将py文件导入一个代码格中
  • %paste:直接运行剪贴板中的代码
  • %cpaste:可以粘贴任何一条代码,在输入结束命令之前都不会执行代码,输入--按回车或者使用Ctrl-D停止粘贴代码,停止粘贴代码后会执行代码
%pwd
'D:\\Python\\datalearning\\Python for data analysis'

%run test.py   # 直接运行py文件

xiaoming
the age is 28
180
the boy`s hair yellow
  • load test.py:将文件导入代码格中
# %load test.py
#!/user/bin/env python
# user:peter

class Person:
    def __init__(self, name):   # 初始化方法
        self.name = name   # 定义一个属性name的值是name
        
    def age(self, n):   # age方法必须传入一个参数
        return "the age is {}".format(n)
    
class Boy:
    height = 180
    def color(self):
        return "the boy`s hair yellow"
    
class TallBoy(Person, Boy):
    pass

if __name__ == "__main__":
    boy = TallBoy("xiaoming")
    print(boy.name)
    print(boy.age(28))
    print(boy.height)
    print(boy.color())

结果

xiaoming
the age is 28
180
the boy`s hair yellow

快捷键说明

image.png
a = np.random.randn(100, 100)
%timeit np.dot(a, a)   # 计算执行时间
156 µs ± 41.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%debug?

自动魔术:魔术函数默认不需要百分号,只要没有变量和函数名相同,用%atuomagic打开或者关闭

foo = %pwd   #   当做变量进行赋值
foo

'D:\\Python\\datalearning\\Python for data analysis'
image.png
%matplotlib   #运行魔术命令,进行配置
Using matplotlib backend: TkAgg

%matplotlib inline    # 绘图中这句话一定要导入
import matplotlib.pyplot as plt
plt.plot(np.random.randn(50).cumsum())

[<matplotlib.lines.Line2D at 0x25411171ba8>]


image.png

Python语言特点

Python语言具有如下特点:

  • 特点是:可读型强、简洁、清晰
  • 缩进使用括号,最好用4个空格
  • 冒号标志着缩进代码块的开始
  • 万物皆对象,对象有自己的属性和方法
  • 动态类型,强引用
a = 5
isinstance(a, int)   # True

a, b = 4, 5.5
isinstance(a, (int, float))   # 通过元组的形式判断,对象类型是否在元组中   True

鸭子类型

  • 不关心对象的类型,只关心对象是否具有某些方法或者用途,例如通过验证一个类型是否遵循迭代协议,判断它是否可迭代__iter__方法
  • 更好的判断方法是:iter函数
def isiterable(obj):  # 判断某个对象是否是可迭代的
    try:
        iter(obj)
        return True
    except TypeError:   # not iterable
        return False

isiterable(" hello python")   # True
isiterable(5)  # False

# 下面实现检验对象是否是列表或者numpy数组,如果不是转成列表:
if not isinstance(x, list) and isiterable(x):   # 判断是否是列表且对象是可迭代
    x = list(x)   # 转成列表形式

模块引入

在Python中模块就是.py扩展名和包含Python代码的文件

#   some_module.py
PI = 3.14159   # 模块的变量PI
def f(x):   # 模块的两个函数即方法
    return x + 2
def g(a, b):
    return a + b

如何调用

import some_module   # 导入文件
result = some_module.f(5)   # 模块的属性,并且传入一个参数
pi = some_module.PI

# 或者另一种导入方式
from some_module import f, g, PI
result = g(5, PI)

# 还可以使用as起别名
import some_module as sm
from some_module import PI as pi, g as gf

r1 = sm.f(pi)
r2 = gf(6, pi)

标量类型

Python的标准库中有一些内建的类型,用以处理数值数据、字符串、布尔值和日期时间等,这种单值 类型称之为标量类型。常用的标量如下:

类型 作用
None python的空值,只存在一个None对象的实例
str 字符串类型
bytes 原生ASCII字节
float 双精度64位浮点数
bool True或者False
int 任意精度的整数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269