python数据分析要安装哪些东西_Python数据分析及Anaconda集成包安装

从本博客开始,将系统的学习Python的数据分析的六大模块numpy、scipy、matplotlib、pandas、scikit-learn、keras,有关Python的基础知识,可以看我的博客 http://digtime.cn/。

一、概念

python特点:简洁,开发效率高,运算速度慢,胶水特性

主要有三点:统计分析方法,提取有用的信息,研究、概括、总结。

数据分析六大模块:numpy、scipy、matplotlib、pandas、scikit-learn、keras

numpy:数据结构基础

scipy:强大的科学计算方法(矩阵分析、信号分析、数理分析...)

matplotlib:丰富的可视化套件

pandas:基础数据分析套件

scikit-learn:强大的数据分析建模块

keras:人工神经网络

二、Python环境安装

1、Anaconda集成包环境安装

要利用Python进行科学计算,就需要一一安装所需的模块,而这些模块可能又依赖于其它的软件包或库,因而安装和使用起来相对麻烦。幸好有人专门在做这一类事情,将科学计算所需要的模块都编译好,然后打包以发行版的形式供用户使用,Anaconda就是其中一个常用的科学计算发行版。

bVXVB6

安装完anaconda,就相当于安装了Python、IPython、集成开发环境Spyder、一些包等等。

对于Mac、Linux系统,Anaconda安装好后,实际上就是在主目录下多了个文件夹(~/anaconda)而已,Windows会写入注册表。安装时,安装程序会把bin目录加入PATH(Linux/Mac写入~/.bashrc,Windows添加到系统变量PATH),这些操作也完全可以自己完成。以Linux/Mac为例,安装完成后设置PATH的操作是

# 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin

echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc

# 更新bashrc以立即生效

source ~/.bashrc

MAC环境变量设置:

➜ export PATH=~/anaconda2/bin:$PATH

➜ conda -V

conda 4.3.30

配置好PATH后,可以通过 which conda 或 conda --version 命令检查是否正确。假如安装的是Python 2.7对应的版本,运行python --version或 python -V 可以得到Python 2.7.12 :: Anaconda 4.1.1 (64-bit),也说明该发行版默认的环境是Python 2.7。

在终端执行 conda list可查看安装了哪些包:

bVXVEF

Conda的包管理就比较好理解了,这部分功能与pip类似。

2、设置编辑器环境和模板

我的编辑器使用的是 Pycharm,可以给其设置开发环境和模板,进行快速开发。

Anaconda 设置:

bVXVFq

固定模板设置:

bVXVDL

# -*- coding:utf-8 -*-

"""

@author:Corwien

@file:${NAME}.py

@time:${DATE}${TIME}

"""

三、numpy

NumPy(Numeric Python)系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。

numpy特性:开源,数据计算扩展,ndarray, 具有多维操作, 数矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。

1、基本操作

小试牛刀:

# -*- coding:utf-8 -*-

"""

@author: Corwien

@file: numpyTest.py

@time: 17/11/5 01:32

"""

import numpy as np

def main():

lst = [[1, 3, 5], [2, 4, 6]]

print(type(lst)) #

np_lst = np.array(lst)

print(type(np_lst)) #

# bool, int, int8, int16, int64 ..., uint8, float, float8

np_list = np.array(lst, dtype = np.float)

# 1 numpy property

print(np_list.shape) # pirnt: (2, 3)

print(np_list.ndim) # pirnt: 2

print(np_list.dtype) # pirnt: float64

print(np_list.itemsize) # pirnt: 8

print(np_list.size) # pirnt: 6

# 2 some arrays

print(np.zeros([2, 4])) #

print(np.ones([4, 3])) #

print("RandNum:")

print(np.random.rand(2, 4))

print("RandInt:")

print(np.random.randint(1, 10, 3))

print("Randn:")

print(np.random.randn(2, 4))

print("Distribute:")

print(np.random.beta(1, 10, 100))

# 3 Aarray Opers

lst = np.arange(1, 11).reshape([2, -1])

print("Exp")

print(np.exp(lst))

print(np.exp2(lst))

print(np.sqrt(lst))

print(np.sin(lst))

print("Log")

print(np.log(lst))

lst1 = np.array([10, 20, 30, 40])

lst2 = np.array([1, 2, 4, 5])

print("Add")

print(lst1 + lst2) # [11 22 34 45]

if __name__ == "__main__":

main()

2、矩阵操作与线性方程组

# -*- coding:utf-8 -*-

"""

@author: Corwien

@file: liner.py

@time: 17/11/6 00:17

"""

import numpy as np

# 4 liner

from numpy.linalg import *

print(np.eye(3))

lst = np.array([[1, 2],

[3, 4]])

print("Inv: ")

print(inv(lst))

print("T: ")

print(lst.transpose())

print("Det:")

print(det(lst))

print(eig(lst))

y = np.array([[5.], [7.]])

print("Slove")

print(solve(list, y))

四、matplotlib

matplotlib 是用来绘图表的,官网 matplotlib.org

1、正弦和余弦

# -*- coding:utf-8 -*-

"""

@author: Corwien

@file: matplo.py

@time: 17/11/6 00:44

"""

import numpy as np

def main():

#line

import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 256, endpoint=True)

c, s = np.cos(x), np.sin(x) # 余弦和正弦

plt.figure(1)

plt.plot(x, c)

plt.plot(x, s)

plt.show()

if __name__ == "__main__":

main()

bVXXEq

具有属性的图:

# -*- coding:utf-8 -*-

"""

@author: Corwien

@file: matplo.py

@time: 17/11/6 00:44

"""

import numpy as np

def main():

#line

import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 256, endpoint=True)

c, s = np.cos(x), np.sin(x) # 余弦,正弦

plt.figure(1)

plt.plot(x, c, color="blue", linewidth=1.0, linestyle="-", label="COS", alpha=0.5) # x 自变量, c 余弦

plt.plot(x, s, "r*", label="SIN")

plt.title("COS & SIN")

ax=plt.gca()

ax.spines["right"].set_color("none")

ax.spines["top"].set_color("none")

ax.spines["left"].set_position(("data", 0))

ax.spines["bottom"].set_position(("data", 0))

ax.xaxis.set_ticks_position("bottom")

ax.yaxis.set_ticks_position("left")

for label in ax.get_xticklabels()+ax.get_yticklabels():

label.set_fontsize(10)

label.set_bbox(dict(facecolor="white", edgecolor="None", alpha=0.2))

plt.legend(loc="upper left")

plt.grid()

plt.axis([-1, 1, -0.5, 1])

plt.fill_between(x, np.abs(x) < 0.5, c, c > 0.5, color="green",alpha=0.25)

t = 1

plt.plot([t, t], [0, np.cos(t)], "y", linewidth=3, linestyle="--")

plt.annotate("cos(1)", xy=(t, np.cos(1)), xycoords="data", xytext=(+5, +10),

textcoords="offset points", arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.1"))

plt.show()

if __name__ == "__main__":

main()

bVX1Kt

五、scipy

scipy 是一个数值计算库,官网 https//www.scipy.org,

scipy包包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,,特殊函数等等。

scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱。scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作。

在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了。作为非专业程序员,科学家总是喜欢重新发明造轮子,导致了充满漏洞的,未经优化的,很难分享和维护的代码。相反,Scipy程序经过优化和测试,因此应该尽可能使用。

Integral

Optimize

Interpolation

Liner

Others

1.Integral 积分

# -*- coding:utf-8 -*-

"""

@author: Corwien

@file: sciTest.py

@time: 17/11/7 00:57

"""

import numpy as np

def main():

#1--integral

from scipy.integrate import quad, dblquad

print(quad(lambda x:np.exp(-x), 0, np.inf)) # print: (1.0000000000000002, 5.842606742906004e-11)

# print(dblquad(lambda t, x:np.exp(-x*t)/t**3, np.inf.lambda x:1, lambda x:np.inf))

if __name__ == "__main__":

main()

六、pandas

pandas官网 为了解决数据分析而创建的库。

基本操作:

# -*- coding:utf-8 -*-

"""

@author: Corwien

@file: pandasTest.py

@time: 17/11/7 00:57

"""

import numpy as np

import pandas as pd

def main():

#Data Structure

s=pd.Series([i*2 for i in range(1, 11)])

print(type(s))

dates = pd.date_range("20171110", periods=8)

df = pd.DataFrame(np.random.randn(8, 5), index = dates, columns=list("ABCDE"))

print df

if __name__ == "__main__":

main()

打印结果:

A B C D E

2017-11-10 -0.634174 -0.075550 1.029316 0.548124 1.556995

2017-11-11 1.060133 -0.392410 -0.007274 -0.555487 1.350169

2017-11-12 0.443465 -0.635941 -0.194218 0.195767 -0.732606

2017-11-13 0.760449 -0.526587 0.007155 0.554792 -1.230684

2017-11-14 1.624870 -0.304462 0.646139 0.187635 1.537512

2017-11-15 -1.312318 1.145372 -0.226041 -0.463330 0.446066

2017-11-16 -0.586573 0.803408 -1.565312 1.949908 -0.959705

2017-11-17 0.863814 -0.949896 1.880501 -0.032511 -0.116557

Process finished with exit code 0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值