numpy
numpy:专门用来做数组(矩阵)的运算
import numpy as np
# numpy数组
arr = np.array([1, 2, 3]) # 一维的numpy数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]]) # 二维的numpy数组(一般就是二维)
# 三维的不使用numpy模块,使用tensorflow/pytorch模块
# 属性
'''
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
astype 类型转换
'''
# 切片
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print('arr2', arr2) # 二维的numpy数组(一般就是二维)
print('arr2[:, :]', arr2[:, :]) # 第一个冒号表示行,第二个冒号表示列,顾头不顾尾
print('arr2[0:1, :]', arr2[0:1, :])
print('arr2[0:1, 0:1]', arr2[0:1, 0:1])
print('arr2[0, :]', arr2[0, :])
print('arr2[0, 0], type(arr2[0, 0])', arr2[0, 0], type(arr2[0, 0]))
print('arr2[0, [0, 2]]', arr2[0, [0, 2]])
print('arr2[0, 0] + 1', arr2[0, 0] + 1)
# 修改值
arr2 = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型
print(arr2) # 二维的numpy数组(一般就是二维)
arr2[0, :] = 0
print(arr2)
arr2[1, 1] = 1
print(arr2)
arr2[arr2 < 3] = 3 # 布尔取值
print(arr2)
# 合并
arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型
print(arr1)
arr2 = np.array([[7, 8, 9], [10, 11, 12]]) # 可变数据类型
print(arr2)
print(np.hstack((arr1,arr2))) # 行合并
print(np.vstack((arr1,arr2))) # 列合并
print(np.concatenate((arr1, arr2))) # 默认列合并
print(np.concatenate((arr1, arr2),axis=1)) # 1表示行;0表示列
# 通过函数创建numpy数组
arr = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型
print(np.zeros((5, 5))) # 生成五行五列数值为0的二维数组
print(np.ones((5, 5)) * 100) # 生成五行五列数值为100的二维数组
# 数组运算
# +-*/ // % **
# numpy随机数
print(np.random.rand(3, 4))
print(np.random.randint(1, 10, (3, 4))) ## 最小值1,最大值10,3*4
pandas模块
# pandas基于Numpy,主要用来处理表格数据
import pandas as pd
import numpy as np
dates = pd.date_range('20190101', periods=6, freq='M')
values = np.random.randint(1, 10, (6, 4))
columns = ['c1', 'c2', 'c3', 'c4']
# 生成DataFrame数据结构
df =pd.DateFrame(values, index=dates, columns=columns)
# 属性
'''
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
astype 类型转换
'''
# 排序
df = df.sort_index(axis=1) # 0表示列,1表示行
df = df.sort_values('c3')
# 取值
df['c1']
df[['c1', 'c3']]
df.loc['2019-01-31': '2019-02-28'] # 按行取值
df.values[1, 1] # 按值取值,第二行第二列
df[df['c1']>3]
# 替换值
df.iloc[1,1] = 1
# pandas操作表格
from io import StringIO
test_data = '''
5.1,,1.4,0.2
4.9,3.0,1.4,0.2
4.7,3.2,,0.2
7.0,3.2,4.7,1.4
6.4,3.2,4.5,1.5
6.9,3.1,4.9,
,,,
test_data = StringIO(test_data) # 把test_data读入内存中相当于变成文件
df = pd.read_csc('test.csv', header=None) # 读取文件
df.columns = ['c1', 'c2', 'c3', 'c4']
df.index = ['nick', 'jason', 'tank']
df.to_csv('test1.csv')
matplotlib模块
matplotlib是一个绘图库,它可以创建常用的统计图,包括条形图、箱型图、折线图、散点图、饼图和直方图。
import matplotlib.pyplot as plt # 默认支持英文,不支持中文
from matplotlib.font_manager import FontProperties
font = Fontproperties(fname='D:msyh.ttc')
# 条形图
classer = ['3班', '4班', '5班', '6班']
students = [50, 60, 55, 67]
ind = range(len(classes))
plt.bar(ind, students, color='r')
plt.xticks(ind, classer, fontproperties=font)
plt.show()
# 直方图
import numpy as np
mu1, mu2, sigma = 50, 100, 10
x1 = mu1 + sigma * np.random.randn(10000)
x2 = mu2 + sigma * np.random.randn(10000)
plt.hist(x1, bins=50) # 每50个数据一根柱子
plt.show()
# 折线图
plt.plot(x1,marker='o',color='r',label='红线',linestyle='--')
plt.plot(x2,marker='*',color='y',label='黄线',linestyle='-.')
plt.plot(x3,marker='s',color='green',label='绿色',linestyle=':')
plt.plot(x4,marker='x',color='b',label='蓝色',linestyle='-')
x1 = np.random.randn(1,40).cumsum()
x2 = np.random.randn(1,40).cumsum()
x3 = np.random.randn(1,40).cumsum()
x4 = np.random.randn(1,40).cumsum()
plt.legend(prop=font) # label的字体的需要在这里换
plt.show()