Python基础学习之Python主要的数据分析工具总结
Python主要是依靠众多的第三方库来增强它的数据处理能力的。常用的是Numpy库,Scipy库、Matplotlib库、Pandas库、Scikit-Learn库等。
常规版本的python需要在安装完成后另外下载相应的第三方库来安装库文件。而若安装的是Anaconda版本的Python,则不需要一个一个安装第三方库,可能已经同时安装了这些库。
Anaconda是专门应用于科学计算的Python版本。
Numpy库:表达N维数组的最基本的库。
Numpy库是专门为应用于严格的数据处理开发的,它提供了一个非常强大的N维数组对象array和实用的线性代数、傅里叶变换和随机数生成函数,可以存储和处理大型的矩阵,Scipy,matplotlib,pandas库等均依赖于它。
① 安装Numpy库:pip install numpy ,集成安装方法(anaconda)或者文件安装方法(先从UCI页面搜索库,下载对应版本的文件,使用 pip install <文件名>进行安装)
② 多维数组:用array函数创建数组,array函数接收一切序列类型的对象(list,tuple,其他数组) import numpy as np
A=np.array(列表、元组或数组)
创建特殊函数:import numpy as np
B=np.ones(n,m),C=np.zeros(n,m) ,I=np.eye/identify(n) 等
SciPy库:提供了真正的矩阵,以及基于矩运算的对象和函数,Scipy包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信息处理和图像处理、常微分方程求解和其他科学和工程常用的计算。
注意:Scipy库依赖于Numpy库,需先安装Numpy库
例:使用Scipy求解线性方程组的方法:
import scipy
from scipy import linalg
a=scipy.mat('[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6]')
b=scipy.mat('[8;9;-5;0]')
solve=linalg.solve(a,b)
print(solve) #运行结果输出值矩阵
[ [3.]
[-4.]
[-1.]
[1.] ]
该方程的另一解为:使用LU求解多个线性方程
from numpy import *
import scipy.linalg as s1
A=array([[2,1,-5,1],[1,-3,0,-6],[0,2,-1,2],[1,4,-7,6]])
b=array([8,9,-5,0])
bi=b.reshape(-1,1)
[LU,piv]=s1.lu_factor(A)
print(LU,piv)
xi=s1.lu_solve((LU,piv),bi)
print(xi)
#得到运行结果:[[ 2. 1. -5. 1. ]
[ 0.5 -3.5 2.5 -6.5 ]
[ 0.5 -1. -2. -1. ]
[ 0. -0.57142857 -0.21428571 -1.92857143]] [0 1 3 3]
[[ 3.]
[-4.]
[-1.]
[ 1.]]
在Scipy 中,分解LU的方法有两种:1.标准方法是scipy.linalg.lu 该方法返回三个矩阵L,U,P。
2.方法lu_factor与lu_solve结合起来使用,L和U一起存储在n*n的数组中,存储序列矩阵P的信息只需要一个n整数向量即轴向量来完成。
3.Matplotlib库:是python的一个2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。应用: 使用Matplotlib可以实现数据的可视化
例1:使用Matplotlib进行画图的一些基本代码:
iimport matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,1000) #设置自变量格式 其中linspace(0,10,1000)表示x由平均分布在0—10之间的1000个点所组成
y=np.sin(x)+1 #设置因变量y
z=np.cos(x**2)+1 #设置另一因变量z
plt.figure(figsize=(8,4)) #设置图像大小
plt.plot(x,y,label="sinx+1",color='red',linewidth=2) #作图(x,y),设置标签格式
plt.plot(x,z,label="cosx^2+1") #作图(x,z)
plt.xlabel('Time(s)') #设置x轴名称
plt.ylabel('Volt') #设置y轴名称
plt.title('A simple Example') #设置表格标题
plt.ylim(0,2.2) #显示的y轴范围
plt.legend() #显示图例
plt.show() #显示作图结果
运行上述代码,可以得到如下图:(注意:该图可以保存为图片格式,保存的图片质量几乎满足各种版本要求)
4.pandas 库:是包含高级的数据结构和精巧的分析工具,支持SQL的数据增、删、改、查操作,并包含很多处理函数。
(1)Pandas的数据结构series:
Series 由一组数据(各种Numpy数据类型)以及一组与之有关的数据标签(即索引)组成。它的字符串的表现形式为:索引左边 值右边
例1. 创建Series对象:
from pandas import Series
obj_list=[1,2,3,4,5]
obj_tuple=(1.2,2.5,3.3,4.8,5.4)
obj_dict={'Tom':[16,'boy'],'Max':[12,'boy'],'Julia':[18,'girl']}
series_list=Series(obj_list)
series_tuple=Series(obj_tuple,index=['a','b','c','d','e'])
series_dict=Series(obj_dict)
print("(1)通过list建立Series:")
print(series_list)
print('(2)通过tuple建立series:')
print(series_tuple)
print("(3)通过dict建立series:")
print(series_dict)
运行结果为:
(1)通过list建立Series:
0 1 #注意:当没有给出索引值得时候,series从0开始自动创建索引
1 2
2 3
3 4
4 5
dtype: int64
(2)通过tuple建立series:
a 1.2
b 2.5
c 3.3
d 4.8
e 5.4 dtype: float64
(3)通过dict建立series:
Tom [16, boy]
Max [12, boy]
Julia [18, girl] dtype: object
(2)Pandas的数据结构DataFrame
DataFrame 是pandas的主要数据结构之一,是一种带有二维标签的二维对象,DataFrame结构的数据有一个行索引和列索引,且每一行的数据格式可能是不同的。
例:DataFrame的创建和一些基本操作:
from pandas import DataFrame #从pandas库中引用DataFrame
from pandas import Series #从pandas库中引用series
obj={'name':['Tom','Peter','Lucy','Max','Anna'],'age':['17','23','44','27','36'],
'status':['student','student','doctor','clerk','performer']}
series_dict1=Series([1,2,3,4,5],index=['a','b','c','d','e'])
series_dict2=Series([6,7,8,9,10],index=['a','b','c','d','e'])
print(series_dict2)
df_obj=DataFrame(obj)#创建dataframe对象
print(df_obj)
df_obj2=DataFrame([series_dict1,series_dict2])
print(df_obj2)
print('---查看前几行数据,默认5行---')
print(df_obj.head())
print("-----提取一列-----")
print(df_obj.age)
print("------添加列-----")
df_obj['gender']=['m','m','f','m','f'] #直接用键来添加
print(df_obj)
print('-----删除列-----')
del df_obj['status']
print(df_obj)
print("-----转置-----")
print(df_obj2.T)
运行结果:
a 6 #返回series_dict2
b 7
c 8
d 9
e 10
dtype: int64
name age status #dataframe数据结构
0 Tom 17 student
1 Peter 23 student
2 Lucy 44 doctor
3 Max 27 clerk
4 Anna 36 performer
a b c d e
0 1 2 3 4 5
1 6 7 8 9 10
--查看前几行数据,默认5行---
name age status
0 Tom 17 student
1 Peter 23 student
2 Lucy 44 doctor
3 Max 27 clerk
4 Anna 36 performer
-----提取一列-----
0 17
1 23
2 44
3 27
4 36
Name: age, dtype: object
------添加列-----
name age status gender
0 Tom 17 student m
1 Peter 23 student m
2 Lucy 44 doctor f
3 Max 27 clerk m
4 Anna 36 performer f
-----删除列-----
name age gender
0 Tom 17 m
1 Peter 23 m
2 Lucy 44 f
3 Max 27 m
4 Anna 36 f
-----转置-----
0 1
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Python基础学习之Python主要的数据分析工具总结的更多相关文章
- Python基础学习之环境搭建
Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...
- Day1 Python基础学习
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- (一)python基础学习
根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...
- python基础学习(起步)
目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Python基础学习一
Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...
随机推荐
- 理解、学习与使用 JAVA 中的 OPTIONAL<转>
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都 ...
- caffe网络结构可视化在线工具
http://ethereon.github.io/netscope/#/editor shift+enter
- R语言与机器学习学习笔记
人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自 ...
- 安装redis时Newer version of jemalloc required错误解决
问题: [root@localhost redis-4.0.0]# make cd src && make allmake[1]: Entering directory `/root/ ...
- phantomjs 是什么?----主要是mac下面
phantomjs 是什么? PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎.它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG. pha ...
- PHP利用get_headers()函数判断远程的url地址是否有效
问题: 利用url访问远程的文件.图片.视频时有时需要请求前判断url地址是否有效. 解决办法: (PHP 5, PHP 7) get_headers — 取得服务器响应一个 HTTP 请求所发送的所 ...
- VC++每个版本对应的库
msvcp.msvcr60.71和80.dll,以及vcomp.dll(不带数字版本号)属于VC++2005版 msvcp.msvcr.vcomp90.dll属于 VC++2008版 msvcp.ms ...
- Nest.js 守卫
Docs: https://docs.nestjs.com/guards 当调用者具有足够的权限时,特定路由才可用 // app.guard.ts import { CanActivate, Exec ...
- 自己配置 vue 项目 知识体系(自己写脚手架 类似 vue-cli )
简单的目录结构: |-index.html |-main.js 入口文件 |-App.vue vue文件,官方推荐命名法 |-package.json 工程文件(项目依赖.名称.配置) npm ini ...
- Python学习之旅(十四)
Python基础知识(13):函数(Ⅳ) Python内置函数 1.abs:取绝对值 abs(-1) 1 2.all:把序列中的每一个元素拿出来做布尔运算,都为真则返回True,如果序列中有None. ...