一直以来,都想学习python数据分析相关的知识,总是拖拖拉拉,包括这次这个分享也是。《利用python进行数据分析 第2版》是一次无意之间在简书上看到的一个分享,我决定将很详细。一直都想着可以复现一下。但总有理由,忘记和拖拉。这次我想通过分享的方式来监督自己学习。争取一周更一次。中间每天都还是要学习,只是周末再分享。
放上原链接: https://www.jianshu.com/p/04d180d90a3f
作者在链接中放上了书籍,以及相关资源。因为平时杂七杂八的也学了一些,所以这次可能是对书中的部分内容的复现。也可能有我自己想到的内容,内容暂时都还不定。在此感谢原简书作者SeanCheney的分享。
直接从第二章开始。
第二章 Python语法基础,IPython和Jupyter Notebooks
我使用的是Jupyter Notebooks进行所有操作
import numpy as np
通过上述语句,导入import后面的包,as 后跟在本次运算中,对那个包取的别名。在Jupyter Notebooks中,输入完一句后,运行并跳到下一行中,按shift + enter
data = {i : np.random.randn() for i in range(7)}
'''上述语句表示,对data赋值,data是一个字典,一共有7对,每一个值都是由np.random.randn()产出的随机数。'''
'''导入包的时候,也可以直接导入我们需要的那个函数'''
from numpy.random import randn
data = {i : randn() for i in range(7)}
print(data)
tab补全
这个是在IPython shell 中可以对文件路径、命名、对象和模块属性这些进行文件全路径的补全
当我输入到numpy.的时候,按下tab键,就可以补全后面的函数。
自省
加上?,就可以显示出对象的详细信息。
加上??,就可以显示出对象的源代码。
%run命令
这个是可以在IPython中运行另一段代码,而在jupyter notebook中,这是用%load
Ctrl+C
可以打断正在运行中的代码。在我目前用到的IDE中,基本上行都是可以用Ctrl+C打断运行代码
IPython和jupyter notebook都有一套快捷键,在jupyter notebook中,可以参考帮助文档。
IPython中还有一套魔术命令,但是我一般都不用IPython,所以这一段我就没细看。有需要的可以去看原作者的帖子内容。
在jupyter notebook中可以随意复制粘贴,但IPython shell 的风格和cmd较为接近,复制粘贴相对麻烦,可以使用%paste 和%cpaste可以运行剪切板中的代码,%cpaste在运行的时候会给出一段提示。jupyter notebook中就不能使用这个了。
Python语法基础
通过缩进表示文档的语句之间的空间。一般使用四个空格,或者按一下Tab键。
在python中,数字、字符串、函数、模块都可以作为一个对象。同时,在语句中也可以通过#键,对每一行内容进行一个注释。
书中还提到了一个鸭子类型,即只要满足我们需要功能,那他就是符合我们要求的。这可以去判断一个对象是不是可以达到我们需要的功能。
Python中,通过=传递数组,在=前后的变量对应的内容是一样的,变量类似指针,同时指向内存的一个内容,改变其中的一个,会影响另一个的值。
a=[1,2,3]
b=a
b
# out:[1,2,3]
a.append(3)
b
# out:[1,2,3,4]
引入
这个可以导入我们之前编辑的文件
可以引用我们在另一个文件确定的函数等等。
这是在同一个文件夹中便捷的some.py文件
import some
some.f(2)
# out:4
print(some.g(3,4))
some.PI
# out:7
# out:3.14159
运算符
具体的内容可以参照这个内容
python中字符串和元祖是不可变的,其余的基本上都是可变的。
Python的标准库中有⼀些内建的类型,⽤于处理数值数据、字符串、布尔值,和⽇期时间。这些单值类型被称为标量类型,本书中称其为标量。
python中的数据类型主要是int和float类型,int类型可以存储任意大的数。float为浮点数
python中还有字符串,一般是放在’ '中间,原始的字符串不能修改,可以通过把一个字符串赋值给另一个值进行修改,但不改变原始值。
可以通过list方法打开字符串,然后就可以进行相关操作了。
有些时候由于字符串中有一些双斜杠,这个时候可以在字符串前面加一个r,表示字符串只是表示字符串本身。就不会出现转义等情况了。
编码和解码 ,编码使用encode ,解码使用decode
a='hallo'
x=list(a)
x
# out:['h', 'a', 'l', 'l', 'o']
m=a.encode('utf-16')
m
# out:b'\xff\xfeh\x00a\x00l\x00l\x00o\x00'
布尔值,主要是true和false
类型转换,可以转换对象的类型,str(),bool(),float()等,可以转成相关的str,bool,float类型
None 空值
时间函数 datetime
from datetime import datetime, date, time
dt = datetime(2020,1,4,20,00,12)#年月日时分秒
print(dt.date())
print(dt.time())
# out:2020-01-04
# out:20:00:12
dt.strftime('%m/%d/%Y %H:%M')
# out:'01/04/2020 20:00'
控制流:
if 语句,主要包括:if ,elif,else
for 循环
while语句
pass 语句
range循环:主要是迭代器
三元表达式
value = true-expr if condition else false-expr
# 等价于
if condition:
value = true-expr
else:
value = false-expr