python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

Python介绍、 Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置
python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))
数据探索(数据清洗)①——数据质量分析(对数据中的缺失值、异常值和一致性进行分析)
数据探索(数据清洗)②—Python对数据中的缺失值、异常值和一致性进行处理
数据探索(数据集成、数据变换、数据规约)③—Python对数据规范化、数据离散化、属性构造、主成分分析 降维
数据探索(数据特征分析)④—Python分布分析、对比分析、统计量分析、期性分析、贡献度分析、相关性分析
挖掘建模①—分类与预测
挖掘建模②—Python实现预测
挖掘建模③—聚类分析(包括相关性分析、雷达图等)及python实现
挖掘建模④—关联规则及Apriori算法案例与python实现

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim

计算器


print(5 + 5)
print(5 - 5)

print(3 * 5)
print(10 / 2)

print(4 ** 2)

print(18 % 7)

print(100 * 1.1**10)

变量

变量 有意义的名字 避免使用像a、x Python中的变量名是区分大小写的

height = 1.70
weight = 55
bmi = weight / height ** 2
print(bmi)

类型

print(type(1.11))
print(type(1))
print(type(True))
print(type("hello"))
print(type("123"))
print(type(int("123")))
print('12'+'34')
print(int('12')+int('34'))

判断与循环

需要特别指出的是,Python一般不用花括号{},也没有end语句,它是用缩进对齐作为语句的层次标记。同一层次的缩进量要一一对应,否则报错。

if 条件1:
  语句2
elif 条件3:
  语句4
else:
  语句5

循环

while

s,k = 0
while k < 101:
  k = k + 1
  s = s + k
print s

for

s = 0
for k in range(101):
  s = s + k
print s

in是一个非常方便、而且非常直观的语法,用来判断一个元素是否在列表/元组中,range用来生成连续的序列,一般语法为range(a, b, c),表示以a为首项、c为公差且不超过b-1的等差数列,如:

s = 0
if s in range(4):
  print u's在0, 1, 2, 3中'
if s not in range(1, 4, 1):
  print u's不在1, 2, 3中'

函数

Python用def来自定义函数:

def add2(x):
  return x+2
print add2(1)

Python的函数返回值可以是各种形式,比如返回列表,甚至返回多个值

def add2(x = 0, y = 0):
  return [x+2, y+2]
def add3(x, y):
  return x+3, y+3
a, b = add3(1,2)

Python支持用lambda对简单的功能定义”行内函数”,这有点像Matlab中的”匿名函数”:

f = lambda x : x + 2
g = lambda x, y: x + y

数据结构

List(列表)/Tuple(元组)

从外形上看,列表与元组的区别是,列表是用方括号标记的,如a = [1, 2, 3],而元组是用圆括号标记的,如b = (4, 5, 6),访问列表和元组中的元素的方式都是一样的,如a[0]等于1,b[2]等于6,等等。

c = [1, 'abc', [1, 2]]

family = ['me', 1.73, 'sister', 1.68, 'mom', 1.71, 'dad', 1.89]

print(type(family))
print(family[3])
print(family[0:2])
print(family[:2])
print(family[-2:])
print(family[:])
print(family[1:7:2])

family[7] = 1.86
family[0:2] = ['taller_me', 1.78]

family = family + ['brother', 0.85]

del(family[2:4])

family2 = [['me', 1.73], ['sister', 1.68], ['mom', 1.71], ['dad', 1.89]]

print(family2[1][1])
x = ['a', 'b', 'c']
y = x
y[0] = 'd'
print(id(x))
print(id(y))
z = list(x)
print(id(x))
print(id(z))

Python使用对象模型来存储数据,任何类型的值都是一个对象,所有对象都具备三个特性:身份(ID)、值(value)、类型(type)。这里的列表自然也是对象,x、y、z这类列表名称是ID,它们所指向的内容才是value。所以当使用 y = x 时,只是将ID进行传递,它们所指向的值是同一个。但是使用 z = list(x),则是创建了一个新的对象z。

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

列表与元组

  • 列表可以被修改,而元组不可以。
    比如,对于a = [1, 2, 3],那么语句a[0] = 0,就会将列表a修改为[0, 2, 3],
    元组b = (4, 5, 6),语句b[0] = 1就会报错。

要注意的是,如果已经有了一个列表a,同时想复制a,命名为变量b,那么b = a是无效的,这时候b仅仅是a的别名(或者说引用),修改b也会修改a的。正确的复制方法应该是b = a[:]。

  • 跟列表有关的函数是list,跟元组有关的函数是tuple,它们的用法和功能几乎一样,都是将某个对象转换为列表/元组,如list(‘ab’)的结果是[‘a’, ‘b’],tuple([1, 2])的结果是(1, 2)。

一些常见的与列表/元组相关的函数

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

; 作为对象来说,列表本身自带了很多实用的方法

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

Dictionary(字典)

Python引入了”字典”这一方便的概念。从数学上来讲,它实际上是一个映射。通俗来讲,它也相当于一个列表,然而它的”下标”不再是以0开头的数字,而是自己定义的”键”(Key)。

创建一个字典的基本方法

d = {'today':20, 'tomorrow':30}

这里的’today’、’tomorrow’就是字典的键,它在整个字典中必须是唯一的,而20、30就是键对应的值。

还有其他一些比较方便的方法来创建一个字典,如通过dict()函数转换,或者通过dict.fromkeys来创建:

dict([['today', 20], ['tomorrow', 30]])
dict.fromkeys(['today', 'tomorrow'], 20)

Set(集合)

Python内置了集合这一数据结构,跟数学上的集合概念基本上是一致的,它跟列表的区别在于:

  1. 它的元素的不重复的,而且是无序的;
  2. 它不支持索引。一般我们通过花括号{}或者set()函数来创建一个集合:
s = {1, 2, 2, 3}
s = set([1, 2, 2, 3])

由于集合的特殊性(特别是无序性),因此集合有一些特别的运算:

a = t | s
b = t & s
c = t – s
d = t ^ s

函数式编程

函数式编程(Functional programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。简单来讲,函数式编程是一种”广播式”的编程,一般来说结合前面提到过的lambda定义函数,用于科学计算中,会显得特别简洁方便。

lambda

map


b = [i+2 for i in a]
b = map(lambda x: x+2, a)
b = list(b)

reduce

有点像map,但map用于逐一遍历,而是reduce用于递归计算。


reduce(lambda x,y: x*y, range(1, n+1))

其中range(1, n+1)相当于给出了一个列表,元素是1~n这n个整数。lambda x,y: x*y构造了一个二元函数,返回两个参数的乘积。reduce命令首先将列表的头两个元素作为函数的参数进行运算,然后将运算结果与第三个数字作为函数的参数,然后再将运算结果与第四个数字作为函数的参数…依此递推,直到列表结束,返回最终结果。

filter

是一个过滤器,用来筛选出列表中符合条件的元素

b = filter(lambda x: x > 5 and x < 8, range(10))
b = list(b)

使用filter首先需要一个返回值为bool型的函数,如上述的lambda x: x > 5 and x < 8定义了一个函数,判断x是否大于5且小于8,然后将这个函数作用到range(10)的每个元素中,如果为True,则”挑出”那个元素,最后将满足条件的所有元素组成一个列表返回。

库的导入与添加

import math
math.sin(1)
math.exp(1)
math.pi
import math as m
m.sin(1)
from math import exp as e
e(1)
sin(1)
from math import *
exp(1)
sin(1)

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

Python数据分析工具

Python本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力。

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

; Numpy

Python并没有提供数组功能。虽然列表可以完成基本的数组功能,但它不是真正的数组,而且在数据量较大时,使用列表的速度就会慢得难以接受。

为此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数。Numpy还是很多更高级的扩展库的依赖库,有Scipy、Matplotlib、Pandas等库都依赖于它。值得强调的是,Numpy内置函数处理数据的速度是C语言级别的,因此在编写程序的时候,应当尽量使用它们内置的函数,避免效率瓶颈的现象(尤其是涉及到循环的问题)。

安装

  • pip 安装
pip install numpy
  • 自行下载渊源代码,然后执行下面安装
python setup.py install
  • Linux
sudo apt-get install python-numpy

使用


import numpy as np
a = np.array([2, 0, 1, 5])
print(a)
print(a[:3])
print(a.min())
a.sort()
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b*b)

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

Scipy

Numpy提供了多维数组功能,但它只是一般的数组,并不是矩阵,比如当两个数组相乘时,只是对应元素相乘,而不是矩阵乘法。Scipy提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。

SciPy包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,显然,这些功能都是挖掘与建模必备的。

安装

  • pip 安装
pip install scipy
  • ubuntu
sudo apt-get install python-scipy

使用


from scipy import integrate
from scipy.optimize import fsolve

def f(x):
    x1 = x[0]
    x2 = x[1]
    return [2*x1 - x2**2 - 1, x1**2 - x2 - 2]

result = fsolve(f, [1, 1])
print(result)

def g(x):
    return (1-x**2)**0.5

pi_2, err = integrate.quad(g, -1, 1)
print(pi_2 * 2)

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

Matplotlib

Matplotlib是最著名的绘图库,它主要用于二维绘图,当然它也可以进行简单的三维绘图。它不仅提供了一整套和Matlab相似但更为丰富的命令,让我们可以非常快捷地用Python可视化数据,而且允许输出达到出版质量的多种图像格式。

安装

  • pip 安装
pip install matplotlib
  • ubuntu
sudo apt-get install python-matplotlib

解决显示问题

中文

在作图之前手动指定默认字体为中文字体,如黑体(SimHei)

plt.rcParams['font.sans-serif'] = ['SimHei']

负号

保存作图图像时,负号有可能显示不正常,可以通过以下代码解决:

plt.rcParams['axes.unicode_minus'] = False

使用


import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)
y = np.sin(x) + 1
z = np.cos(x**2) + 1

plt.figure(figsize=(8, 4))
plt.plot(x, y, label='$\sin x+1$', color='red',
         linewidth=2)
plt.plot(x, z, 'b--', label='$\cos x^2+1$')
plt.xlabel('Time(s) ')
plt.ylabel('Volt')
plt.title('A Simple Example')
plt.ylim(0, 2.2)
plt.legend()
plt.show()

python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

Pandas

Pandas是Python下最强大的数据分析和探索工具(貌似没有之一)。它包含高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单。Pandas建造在NumPy之上,它使得以NumPy为中心的应用很容易使用。Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis),它最初被作为金融数据分析工具而开发出来,由AQR Capital Management于2008年4月开发,并于2009年底开源出来。

Pandas的功能非常强大,支持类似SQL的数据增、删、查、改,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据;等等。

安装

  • pip
pip install xlrd #为Python添加读取Excel的功能
pip install xlwt #为Python添加写入Excel的功能

首先,Pandas基本的数据结构是Series和DataFrame,Series顾名思义就是序列,类似一维数组,DataFrame则是相当于一张二维的表格,类似二维数组,它的每一列都是一个Series。为了定位Series中的元素,Pandas提供了Index这一对象,每个Series都会带有一个对应的Index,用来标记不同的元素,Index的内容不一定是数字,也可以是字母、中文等,它类似于SQL中的主键。

类似地,DataFrame相当于多个带有同样Index的Series的组合(本质是Series的容器),每个Seiries都带有一个唯一的表头,用来标识不同的Series。

使用


import pandas as pd

s = pd.Series([1,2,3], index=['a', 'b', 'c'])
d = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns = ['a', 'b', 'c'])
d2 = pd.DataFrame(s)

d.head()
d.describe()

pd.read_excel('data.xls')
pd.read_csv('data.csv', encoding = 'utf-8')

StatsModels

Pandas着眼于数据的读取、处理和探索,而StatsModels则更加注重数据的统计建模分析,它使得Python有了R语言的味道。StatsModels支持与Pandas进行数据交互,因此,它与Pandas结合,成为了Python下强大的数据挖掘组合。

安装

安装StatsModels相当简单,既可以通过pip安装,又可以通过源码安装,对于Windows用户来说,官网上甚至已经有编译好的exe文件供下载。如果手动安装的话,需要自行解决好依赖问题,StatModel依赖于Pandas(当然也依赖于Pandas所依赖的),同时还依赖于pasty(一个描述统计的库)。

pip install statsmodels

Scikit-Learn

Scikit-Learn是Python下强大的机器学习工具包,它提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测、模型分析等。

安装

Scikit-Learn依赖于NumPy、SciPy和 Matplotlib,因此,只需要提前安装好这几个库,然后安装Scikit-Learn就基本上没有什么问题了,安装方法跟前几节一样,要不就是pip install scikit-learn安装,要不就是下载源码自己安装。

pip install scikit-learn

使用

  • 所有模型提供的接口有:
    model.fit(): 训练模型,对于监督模型来说是 fit(X, y),对于非监督模型是 fit(X)
  • 监督模型提供:
    model.predict(X_new): 预测新样本
    model.predict_proba(X_new): 预测概率,仅对某些模型有用(比如 LR)
    model.score(): 得分越高,fit越好
  • 非监督模型提供:
    model.transform(): 从数据中学到新的”基空间”。
    model.fit_transform(): 从数据中学到新的基并将这个数据按照这组”基”进行转换。

Keras

Scikit-Learn已经足够强大了,然而它并没有包含一种强大的模型——人工神经网络。人工神经网络是功能相当强大的、但是原理又相当简单的模型,在语言处理、图像识别等领域都有重要的作用。近年来逐渐火起来的”深度学习”算法,本质上也就是一种神经网络,可见在Python中实现神经网络是非常必要的。

事实上,Keras并非简单的神经网络库,而是一个基于Theano的强大的深度学习库,利用它不仅仅可以搭建普通的神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等等。由于它是基于Theano的,因此速度也相当快。

安装

安装Keras之前首先需要安装Numpy、Scipy、Theano。安装Theano首先需要准备一个C++编译器,这在Linux下是自带的。因此,在Linux下安装Theano和Keras都非常简单,只需要下载源代码,然后用python setup.py install安装就行了,具体可以参考官方文档。

可是在Windows下就没有那么简单了,因为它没有现成的编译环境,一般而言是先安装MinGW(Windows下的GCC和G++),然后再安装Theano(提前装好Numpy等依赖库),最后安装Keras,如果要实现GPU加速,还需要安装和配置CUDA(天下没有免费的午餐,想要速度、易用两不误,那么就得花点心思)。
值得一提的是,在Windows下的Keras速度会大打折扣,因此,想要在神经网络、深度学习做更深入研究的读者,请在Linux下搭建相应的环境。

使用

用Keras搭建神经网络模型的过程相当简洁,也相当直观,它纯粹地就像搭积木一般。我们可以通过短短几十行代码,就可以搭建起一个非常强大的神经网络模型,甚至是深度学习模型。如简单搭建一个MLP(多层感知器):
要注意的是,Keras的预测函数跟Scikit-Learn有所差别,Keras用model.predict()方法给出概率,model.predict_classes()给出分类结果。


from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD

model = Sequential()
model.add(Dense(20, 64))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, 64))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, 1))
model.add(Activation('sigmoid'))

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)

model.fit(X_train, y_train, nb_epoch=20, batch_size=16)
score = model.evaluate(X_test, y_test, batch_size=16)

Gensim

Gensim是用来处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等,这些领域的任务往往需要比较多的背景知识。

需要一提的是,Gensim把Google在2013年开源的著名的词向量构造工具Word2Vec编译好了,作为它的子库,因此需要用到Word2Vec的读者也可以直接用Gensim而无需自行编译了。据说Gensim的作者对Word2Vec的代码进行了优化,所以它在Gensim下的表现据说比原生的Word2Vec还要快。(为了实现加速,需要准备C++编译器环境,因此,建议用到Gensim的Word2Vec的读者在Linux下环境运行。)

参考Python数据分析与挖掘实战 张良均

Original: https://blog.csdn.net/qq_37746855/article/details/121501977
Author: eeenkidu
Title: python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765268/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • import torch中DLL load failed while importing _multiarray_umath: 找不到指定的模块,一步解决。

    网上找了好多方法,大部分是换conda 环境,版本,激活,光激活试了好久,最终还是没有激活。(2)更换numpy的版本,python版本,方法都不行 。 最后找到一个方法,可能说是…

    Python 2023年8月2日
    052
  • 千古前端图文教程-HTML011-HTML基础知识回顾

    HTML基础知识回顾 HTML基础知识回顾 本文主要内容 #html 的常见元素 #1、head 区域的 html 元素 #2、html 元素(body 区域) #html 文档的…

    Python 2023年6月12日
    0114
  • Pandas(二)—— 索引、分组

    Python模块 —— Pandas Pandas(二)—— 索引、分组 * 三、索引 – 3.1 索引器 + 3.1.1 列索引、行索引 3.1.2 loc索引器、i…

    Python 2023年8月17日
    061
  • Python人工智能之图片识别,一行代码实现图片文字识别

    下面是我们要识别的图片 先看下效果图 由于我们在运行代码后进行了识别,有几个单词无法正确识别,但大部分单词都可以识别。 [En] As a result of our recogn…

    Python 2023年5月24日
    061
  • 为什么建议初学者选择Python入门?

    这个星球的编程语言有数百上千种,能够称为热门的也只有那十几种而已,比如C、C++、Java、C#、PHP等,这些编程语言也都十分火爆。 但对于新人来讲,尤其是现阶段对编程语言的优劣…

    Python 2023年10月30日
    049
  • Python Project- Alien_invasion(外星人入侵)

    目录 > 武装飞船 > 开始游戏项目 > 创建pygame窗口以及相应用户输入 >> 初始化程序 >> 创建surface对象 >&…

    Python 2023年9月21日
    055
  • conda的源配置

    修改conda源可以直接修改.condarc文件,也可以通过代码conda config –add添加 conda的源和大多数编程软件一样,都有清华镜像,中科大镜像等等…

    Python 2023年9月9日
    059
  • copp | AAA

    2、在转发层有一个CEF表,该表是实时的与控制层的路由表同步的,其实严格来说路由器其实并不是按照路由表来转发的,而是按照转发层的CEF表来转发数据的。 3、在控制层与转发层有一道门…

    Python 2023年6月15日
    057
  • matplotlib详细教学

    Matplotlib初相识 认识matplotlib Matplotlib是一个Python 2D绘图库,能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种…

    Python 2023年9月3日
    055
  • Python安装Pandas库

    方法一:cmd命令行执行pip install pandas1.Windows+R,输入cmd打开命令行窗口,输入pip install pandas。如下图所示2.若出现下图所示…

    Python 2023年8月1日
    054
  • 【Python】如何写一个锅炉温控系统

    1.前言 冬天很冷,买了一个锅炉,需要循环泵的。简单来说就是锅炉水热了之后循环泵自动开启,然后将热水输送走,送到暖 气,热水抽走,凉水进入锅炉,温度降低,循环泵关闭,等待下一次水烧…

    Python 2023年11月2日
    046
  • java线程池

    文章目录 1.线程池 * 1.1 什么是线程池 1.2 ExecutorService接口常用方法 1.3 线程池工作流程 1.4 线程池状态 1.5 自定义线程池构造方法 1.6…

    Python 2023年11月6日
    037
  • 基于Python的语音识别系统(孤立词)

    目录1 任务介绍 12 项目实现 12.1 预处理 22.2 特征提取 32.2.1 归一化 32.2.2 预加重 32.2.3 分帧 32.3 加窗 42.3.1 端点检测 62…

    Python 2023年9月15日
    035
  • 为了摸鱼,我开发了一个工具网站

    🏡 博客首页:派 大 星⛳️ 欢迎关注 🐳 点赞 🎒 收藏 ✏️ 留言🎢 本文由派大星原创编撰🚧 系列专栏:《开源专栏》🎈 本系列主要输出作者自创的开源项目🔗 作品:www.jso…

    Python 2023年9月26日
    048
  • LVGL库入门教程 – 颜色和图像

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月15日
    083
  • 深度学习环境、框架搭建(Conda,Pytorch,PyChram,jupyter)

    本文描述了深度学习所需要的一些环境搭建和框架安装 一、Conda的安装和虚拟环境的创建; 二、Pytorch不同版本的安装(CPU和GPU); 三、PyCharm的安装和虚拟环境的…

    Python 2023年9月9日
    053
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球