资讯专栏INFORMATION COLUMN

Python数据分析

Shimmer / 2023人阅读

摘要:从本博客开始,将系统的学习的数据分析的六大模块,有关的基础知识,可以看我的博客。专为进行严格的数字处理而产生。在实现一个程序之前,值得检查下所需的数据处理方式是否已经在中存在了。积分六官网为了解决数据分析而创建的库。

</>复制代码

  1. 从本博客开始,将系统的学习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就是其中一个常用的科学计算发行版。

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

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

</>复制代码

  1. # 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin
  2. echo "export PATH="~/anaconda2/bin:$PATH"" >> ~/.bashrc
  3. # 更新bashrc以立即生效
  4. source ~/.bashrc

MAC环境变量设置:

</>复制代码

  1. export PATH=~/anaconda2/bin:$PATH
  2. ➜ conda -V
  3. conda 4.3.30

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

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

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

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

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

Anaconda 设置:

固定模板设置:

</>复制代码

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author:Corwien
  4. @file:${NAME}.py
  5. @time:${DATE}${TIME}
  6. """
三、numpy

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

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

1、基本操作

小试牛刀:

</>复制代码

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: Corwien
  4. @file: numpyTest.py
  5. @time: 17/11/5 01:32
  6. """
  7. import numpy as np
  8. def main():
  9. lst = [[1, 3, 5], [2, 4, 6]]
  10. print(type(lst)) #
  11. np_lst = np.array(lst)
  12. print(type(np_lst)) #
  13. # bool, int, int8, int16, int64 ..., uint8, float, float8
  14. np_list = np.array(lst, dtype = np.float)
  15. # 1 numpy property
  16. print(np_list.shape) # pirnt: (2, 3)
  17. print(np_list.ndim) # pirnt: 2
  18. print(np_list.dtype) # pirnt: float64
  19. print(np_list.itemsize) # pirnt: 8
  20. print(np_list.size) # pirnt: 6
  21. # 2 some arrays
  22. print(np.zeros([2, 4])) #
  23. print(np.ones([4, 3])) #
  24. print("RandNum:")
  25. print(np.random.rand(2, 4))
  26. print("RandInt:")
  27. print(np.random.randint(1, 10, 3))
  28. print("Randn:")
  29. print(np.random.randn(2, 4))
  30. print("Distribute:")
  31. print(np.random.beta(1, 10, 100))
  32. # 3 Aarray Opers
  33. lst = np.arange(1, 11).reshape([2, -1])
  34. print("Exp")
  35. print(np.exp(lst))
  36. print(np.exp2(lst))
  37. print(np.sqrt(lst))
  38. print(np.sin(lst))
  39. print("Log")
  40. print(np.log(lst))
  41. lst1 = np.array([10, 20, 30, 40])
  42. lst2 = np.array([1, 2, 4, 5])
  43. print("Add")
  44. print(lst1 + lst2) # [11 22 34 45]
  45. if __name__ == "__main__":
  46. main()
2、矩阵操作与线性方程组

</>复制代码

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: Corwien
  4. @file: liner.py
  5. @time: 17/11/6 00:17
  6. """
  7. import numpy as np
  8. # 4 liner
  9. from numpy.linalg import *
  10. print(np.eye(3))
  11. lst = np.array([[1, 2],
  12. [3, 4]])
  13. print("Inv: ")
  14. print(inv(lst))
  15. print("T: ")
  16. print(lst.transpose())
  17. print("Det:")
  18. print(det(lst))
  19. print(eig(lst))
  20. y = np.array([[5.], [7.]])
  21. print("Slove")
  22. print(solve(list, y))
四、matplotlib

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

1、正弦和余弦

</>复制代码

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: Corwien
  4. @file: matplo.py
  5. @time: 17/11/6 00:44
  6. """
  7. import numpy as np
  8. def main():
  9. #line
  10. import matplotlib.pyplot as plt
  11. x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
  12. c, s = np.cos(x), np.sin(x) # 余弦和正弦
  13. plt.figure(1)
  14. plt.plot(x, c)
  15. plt.plot(x, s)
  16. plt.show()
  17. if __name__ == "__main__":
  18. main()

具有属性的图:

</>复制代码

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: Corwien
  4. @file: matplo.py
  5. @time: 17/11/6 00:44
  6. """
  7. import numpy as np
  8. def main():
  9. #line
  10. import matplotlib.pyplot as plt
  11. x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
  12. c, s = np.cos(x), np.sin(x) # 余弦,正弦
  13. plt.figure(1)
  14. plt.plot(x, c, color="blue", linewidth=1.0, linestyle="-", label="COS", alpha=0.5) # x 自变量, c 余弦
  15. plt.plot(x, s, "r*", label="SIN")
  16. plt.title("COS & SIN")
  17. ax=plt.gca()
  18. ax.spines["right"].set_color("none")
  19. ax.spines["top"].set_color("none")
  20. ax.spines["left"].set_position(("data", 0))
  21. ax.spines["bottom"].set_position(("data", 0))
  22. ax.xaxis.set_ticks_position("bottom")
  23. ax.yaxis.set_ticks_position("left")
  24. for label in ax.get_xticklabels()+ax.get_yticklabels():
  25. label.set_fontsize(10)
  26. label.set_bbox(dict(facecolor="white", edgecolor="None", alpha=0.2))
  27. plt.legend(loc="upper left")
  28. plt.grid()
  29. plt.axis([-1, 1, -0.5, 1])
  30. plt.fill_between(x, np.abs(x) < 0.5, c, c > 0.5, color="green",alpha=0.25)
  31. t = 1
  32. plt.plot([t, t], [0, np.cos(t)], "y", linewidth=3, linestyle="--")
  33. plt.annotate("cos(1)", xy=(t, np.cos(1)), xycoords="data", xytext=(+5, +10),
  34. textcoords="offset points", arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.1"))
  35. plt.show()
  36. if __name__ == "__main__":
  37. main()

五、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 积分

</>复制代码

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: Corwien
  4. @file: sciTest.py
  5. @time: 17/11/7 00:57
  6. """
  7. import numpy as np
  8. def main():
  9. #1--integral
  10. from scipy.integrate import quad, dblquad
  11. print(quad(lambda x:np.exp(-x), 0, np.inf)) # print: (1.0000000000000002, 5.842606742906004e-11)
  12. # print(dblquad(lambda t, x:np.exp(-x*t)/t**3, np.inf.lambda x:1, lambda x:np.inf))
  13. if __name__ == "__main__":
  14. main()
六、pandas

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

基本操作:

</>复制代码

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: Corwien
  4. @file: pandasTest.py
  5. @time: 17/11/7 00:57
  6. """
  7. import numpy as np
  8. import pandas as pd
  9. def main():
  10. #Data Structure
  11. s=pd.Series([i*2 for i in range(1, 11)])
  12. print(type(s))
  13. dates = pd.date_range("20171110", periods=8)
  14. df = pd.DataFrame(np.random.randn(8, 5), index = dates, columns=list("ABCDE"))
  15. print df
  16. if __name__ == "__main__":
  17. main()

打印结果:

</>复制代码

  1. A B C D E
  2. 2017-11-10 -0.634174 -0.075550 1.029316 0.548124 1.556995
  3. 2017-11-11 1.060133 -0.392410 -0.007274 -0.555487 1.350169
  4. 2017-11-12 0.443465 -0.635941 -0.194218 0.195767 -0.732606
  5. 2017-11-13 0.760449 -0.526587 0.007155 0.554792 -1.230684
  6. 2017-11-14 1.624870 -0.304462 0.646139 0.187635 1.537512
  7. 2017-11-15 -1.312318 1.145372 -0.226041 -0.463330 0.446066
  8. 2017-11-16 -0.586573 0.803408 -1.565312 1.949908 -0.959705
  9. 2017-11-17 0.863814 -0.949896 1.880501 -0.032511 -0.116557
  10. Process finished with exit code 0

相关文章:
Anaconda使用总结
Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40986.html

相关文章

  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 学习Python:做数据科学还是网站开发?

    摘要:属于前一种,而且日益被用于数学计算机器学习和多种数据科学应用。近来,由于拥有多个针对机器学习自然语言处理数据视觉化数据探索数据分析和数据挖掘的插件,丰富的数据科学生态体系得到了较大的发展,甚至有将数据科学社区化的趋势。 译者注:本文的英文原文地址是:Python for Data Science vs Python for Web Development,发布时间是10月29日。译者一...

    neu 评论0 收藏0
  • 关于Python的三个谎言,别再盲目学Python

    摘要:关于的三个谎言,你一定要清楚。这是的整个知识体系图谱,对于新手来说,没必要学那么多。第四自动化测试一切关于自动化的东西,似乎都可以满足,可以满足大多数自动化工作,提升工作效率。这都是正常的,千万别急着否定自己,怀疑自己。 ...

    TZLLOG 评论0 收藏0
  • 细数Python三十年技术演变史——萌发于小众,崛起于AI

    摘要:作者宋天龙来源科技大本营导语一切都始于年的那个圣诞节,的诞生并不算恰逢其时,它崛起充满了机遇巧合,也有其必然性。年的圣诞节,开始编写语言的编译器。年发布的标志着的框架基本确定。年月发布了系列的最后一个版本,主版本号为。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龙来源 | AI科技大本营 ...

    tuniutech 评论0 收藏0
  • Python与R、Matlab的对比

    摘要:我们来看一下美国相关专业人员对两者的对比,只是粗略而不精准的翻译一下。小结其实在写这篇文章之前,我就问过一下包括清华在内的学校以及一些数学专业的学生,和还是占主流,但是经过一番调查发现在美国在数据科学数学等方面好像渐成压倒性的优势。 作为一枚程序员,想要研究Python编程语言与数学学习(教学)的结合,就不能不了解以及比对一下其他数学学习与应用的解决方案,比如R语言、Matlab等数学...

    yunhao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...

    lifesimple 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<