【python】5 数据可视化、numpy、pandas基础

目录

1 数据可视化

1.1 散点图scatter()

1.2 折线图plot()

1.3 读取.csv文件

1.4 时间序列

2 numpy基础

2.1 介绍

2.2 创建对象array-ndarray

2.3 数据类型对象dtype

2.4 数组维度axis

2.5 创建数组

2.6 从已有数组创建数组

2.7 切片与索引

2.8 绘图

3 pandas基础

3.1 series

3.2 dataframe

4 scipy

5 scikit-learn 1.0建模工具包


1 数据可视化

安装matplotlib:数学绘图库,其中包含pylab和pyplot,都是用来画函数图的。

安装plotly:生成图表可调整大小,突出特色方面,可以画三维图表。

安装seaborn:可以和pandas一块专业用于统计可视化。


1.1 散点图scatter()

import matplotlib.pyplot as plt
# 导入pyplot模块(包含很多函数画图和表),命名为plt
import matplotlib as mpl

### (通用)函数subplots()可以在一张图中绘制多个图表,fig表示一张图,ax表示多个图表
plt.style.use('grayscale')
# 背景颜色、背景风格 seaborn-ticks\seaborn-white\ # print(plt.style.available)
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 字体
mpl.rcParams['axes.unicode_minus'] = False  # 正常显示负号
fig, ax = plt.subplots()  # fig, ax = plt.subplots() 等价于fig, ax = plt.subplots(11)

### 创建列表,存储数据
xs = range(1, 10)
ys = [x ** 2 for x in xs]
# 方法scatter()绘制散点图
ax.scatter(xs, ys, s=10, c='red')
ax.set_title("平方数", fontsize=24)
ax.set_xlabel("值", fontsize=14)
ax.set_ylabel("值的平方", fontsize=14)
ax.tick_params(axis='both', labelsize=14)  # 刻度数字大小
ax.axis([0, 10, 0, 100])

plt.show()

import matplotlib.pyplot as plt
import matplotlib as mpl
import os

# 通用
plt.style.use('grayscale')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots()

# 绘制散点图
xs = range(1, 10)
ys = [x ** 2 for x in xs]
ax.scatter(xs, ys, s=10, c='red')

# 通用
ax.set_title("平方数", fontsize=24)
ax.set_xlabel("值", fontsize=14)
ax.set_ylabel("值的平方", fontsize=14)
ax.tick_params(axis='both', labelsize=14)  # 刻度数字大小
ax.axis([0, 10, 0, 100])

# (通用)指定图片保存路径
figure_save_path = "pictures"
if not os.path.exists(figure_save_path):
    os.makedirs(figure_save_path)  # 如果不存在目录figure_save_path,则创建
plt.savefig(os.path.join(figure_save_path , 'exam.png')) # 第一个是指存储路径,第二个是图片名字
plt.show()

1.2 折线图plot()

### 导入pyplot模块(包含很多函数画图和表),命名为plt
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

### (通用)函数subplots()可以在一张图中绘制多个图表,fig表示一张图,ax表示多个图表
plt.style.use('seaborn-ticks')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
fig,ax=plt.subplots()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)

ax1.plot(np.random.randn(50).cumsum(), 'k--')  # randn符合正态分布,rand随机样本
ax2.plot(np.random.randn(50).cumsum(), 'k--')  # randn符合正态分布,rand随机样本
ax3.plot(np.random.randn(50).cumsum(), 'k--')  # randn符合正态分布,rand随机样本
ax4.plot(np.random.randn(50).cumsum(), 'k--')  # randn符合正态分布,rand随机样本
plt.show()

1.3 读取.csv文件

读取txt文件,根据“,”号来处理每行、每列数据。

# ex1.csv如下
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo

import pandas as pd

df = pd.read_csv('ex1.csv')
print(df)
   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo

1.4 时间序列

# datatime、time、calender模块是用来处理时间数据
from datetime import datetime # 从模块导入变量

now = datetime.now() # 变量名.方法名()
print(now)
2022-07-26 18:23:12.954225

2 numpy基础

2.1 介绍

pip install numpy,拥有一个强大的N维数组对象 ndarray

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

  1. NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  2. SciPy 是一个开源的 Python 算法库和数学工具包。SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
  1. Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

2.2 创建对象array-ndarray

ndarray 对象是用于存放同类型元素的多维数组。

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

import numpy as np 

### 调用 NumPy 的 array 函数,来创建一个一维数组ndarray
a = np.array([1,2,3])  
print (a)

### 调用 NumPy 的 array 函数,来创建一个二维数组ndarray
b = np.array([[1,  2],  [3,  4]])  
print (b)

### 调用 NumPy 的 array 函数,数据类型为复数 [1.+0.j 2.+0.j 3.+0.j]
c = np.array([1,  2,  3], dtype = complex)  #dtype为数据类型
print (c)

2.3 数据类型对象dtype

类()

实例(abc,xyz)(array函数用来存实例的)(实际数据存起来)

属性(name,age,marks)(dtype函数是用来赋予属性的)

数据类型对象(numpy.dtype 类的实例)用来描述数据的类型、大小、字节顺序等信息

import numpy as np
### int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
dt1 = np.dtype('i4')  # 数据类型
print(dt1) 

dt2 = np.dtype([('age',np.int8)])   # 数据类型
dt2 = np.dtype([('age','i1')])   # 数据类型
a = np.array([(10,),(20,),(30,)], dtype = dt2) 
print(a)

dt3 = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
b = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = dt3) 
print(b)

2.4 数组维度axis

数组的维数称为秩(rank),每一个线性的数组称为轴(axis),也就是维度(dimensions)

axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;

axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

import numpy as np 

a = np.arange(24)  
# [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
b = a.reshape(3,8)  
print(b)

# [[ 0  1  2  3  4  5  6  7]
#  [ 8  9 10 11 12 13 14 15]
#  [16 17 18 19 20 21 22 23]]
c=a.reshape(2,2,6) #行,层,列
print(c)

2.5 创建数组

import numpy as np 

x = np.empty( [3,2], dtype = int ) 
print (x)  #随机值

z = np.zeros( (2,2), dtype = [('x', 'i4'), ('y', 'i4')] )  
print(z)

2.6 从已有数组创建数组

numpy.asarray 类似 numpy.array (转换)

numpy.frombuffer 用于实现动态数组。
numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

2.7 切片与索引

# 切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。
a = np.arange(10)
s = slice(2,7,2)   # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])

2.8 绘图

# matplotlib 软件包的 pyplot 子模块的 plot() 函数绘制

import numpy as np 
import matplotlib as mpl
from matplotlib import pyplot as plt 

x = np.arange(1,11) 
y =  2  * x +  5 
plt.style.use('bmh')  # 背景颜色、背景风格 classic 
mpl.rcParams['font.sans-serif'] = ['KaiTi', 'SimHei', 'FangSong'] # 固定,字体
mpl.rcParams['axes.unicode_minus'] = False  # 固定,正常显示负号
plt.title("菜鸟教程 - 测试", fontsize=24) 
plt.xlabel("x 轴", fontsize=24)
plt.ylabel("y 轴", fontsize=24)
plt.plot(x,y ,'ob',color ='g')  
plt.show()

3 pandas基础

pandas适用于表格、异质数据清洗和分析

numpy适用于同质数据

3.1 series

# series是一维数组型,含index

import pandas as pd

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
states = ['California', 'Ohio', 'Oregon', 'Texas']
obj = pd.Series(sdata, index=states)
print(obj)
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
dtype: float64

3.2 dataframe

# dataframe是二维的,但也可以用分层索引在dataframe展示更高维度的数据。

import pandas as pd

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
print(frame)
    state  year  pop
0    Ohio  2000  1.5
1    Ohio  2001  1.7
2    Ohio  2002  3.6
3  Nevada  2001  2.4
4  Nevada  2002  2.9
5  Nevada  2003  3.2

4 scipy

5 scikit-learn 1.0建模工具包

在 sklearn.datasets 中包含了大量的数据集,可为运算提供测试案例。例如鸢尾花数据集 load_iris()、癌症数据集 load_breast_cancer()、波士顿放假数据集 load_boston() 这些都是各大技术文章里常用的数据集。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值