Python-数据分析模块

Python-数据分析模块,第1张

概述目录 numpy 模块 matplotlib 模块 pandas 模块 numpy 模块 numpy 模块主要用来做数据分析,对numpy数组 进行科学运算 主要方法和常用属性,都是用numpy 生成的对象.出来的 import numpy as np 属性 描述 T 数组的转置,行和列一一对应,重构,每行2个元素 dtype 数组元素的数据类型(int32 和 float64) size 数组元

目录

numpy 模块 matplotlib 模块 pandas 模块 numpy 模块

numpy 模块主要用来做数据分析,对numpy数组 进行科学运算

主要方法和常用属性,都是用numpy 生成的对象.出来的

import numpy as np

属性 描述
T 数组的转置,行和列一一对应,重构,每行2个元素
dtype 数组元素的数据类型(int32 和 float64)
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(有几行几列)
astype 数据类型转换
常用方法 描述
元素切分 [:,:] 表示行和列
逻辑取值 取出用numpy生成的数组对象 > 4的元素
赋值 取出用numpy生成的数组对象的索引值 = 0
数组横向合并 行和行合并,列和列合并
数组垂直合并 相当于List update,直接添加元素
数组函数 描述
np.array() 将列表转换为数组,可选择是否制定dtype
np.ones() 传入行数和列数,值都为1
np.zeros() 传入行数和列数,值都为0
np.eye() 输入行数和列数,对角值为1
np.arange() 和列表的range方法一样,支持浮点数
np.linspace() 类似arange(),第三个参数为数组长度
np.empty() 创建一个元素全随机的数组
np.reshape() 重塑形状
数组运算 与数组函数联用 +-*/ 数字
生成随机数(常用) np.random.rand(x,y)
np.random.random(x,y)
np.random.choice(x,y)
np.random.shuffle(x,y)
numpy数学 统计方法 描述
sum 求和
cumsum 累加求和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
sort 排序

以下代码具体解释

lt1 = [1,2,3]lt2 = [4,5,6]lt = []# 如果我们想要对这两个列表内数据相乘,我们可以用for循环for i in range(len(lt1)):    lt.append(lt1[i] * lt2[i])print(lt)import numpy as np# 利用numpy 进行矩阵计算 更方便arr1 = np.array([1,3])arr2 = np.array([4,6])print(arr1 * arr2)## [ 4 10 18]# numpy 创建 numpy 数组   --》 可变的数据类型# 一维数组  通常不使用,创建的数组没有,arr = np.array([1,3])print(arr)# [1 2 3]# 二维数组arr = np.array([    [1,3],[4,6]])print(arr)# [[1 2 3]#  [4 5 6]]# 三维数组      通常不使用arr = np.array([    [1,6],[7,8,9]])print(arr)# [[1 2 3]#  [4 5 6]#  [7 8 9]]# numpy 数组的属性 特性arr = np.array([    [1,6]])# T数组的转置,行列互换print(arr,"\n",arr.T)# [[1 4]#  [2 5]# [3 6]]# dtype 数组元素的数据类型,# numpy数组是属于python解释器的,# int32 float64 属于numpy数组print(arr.dtype)# int32# size 数组元素的个数print(arr.size)# 6# ndim 数据的维数print(arr.ndim)# 2# shape 数据的纬度大小(以元组形式)print(arr.shape)# (2,3)# astype 类型转换 为int32arr = arr.astype(np.float64)print(arr)# [[1. 2. 3.]#  [4. 5. 6.]]# 切片numpy数组arr = np.array([    [1,6]])print(arr[:,:])     # :行,:列# [[1 2 3]#  [4 5 6]]print(arr[0,0])# 1print(arr[1,2])# 6print(arr[:,-2:])# [[2 3]#  [5 6]]# 逻辑取值print(arr[arr > 4])# [[2 3]#  [5 6]]#  [5 6]# 赋值arr[0,0] = 0print(arr)# [[0 2 3]#  [4 5 6]]# 数组合并arr1 = np.array([    [1,6]])arr2 = np.array([    [7,9],['a','b','c']])# 横向合并print(np.hstack((arr1,arr2)))# [['1' '2' '3' '7' '8' '9']#  ['4' '5' '6' 'a' 'b' 'c']]# 垂直合并print(np.vstack((arr1,arr2)))# [['1' '2' '3']#  ['4' '5' '6']#  ['7' '8' '9']#  ['a' 'b' 'c']]# 默认以列合并  #axis = 0    0表示列,1表示行print(np.concatenate((arr1,arr2),axis=1))# [['1' '2' '3' '7' '8' '9']#  ['4' '5' '6' 'a' 'b' 'c']]# 通过函数创建numpy数组print(np.ones((2,3)))# [[1. 1. 1.]#  [1. 1. 1.]]print(np.zeros((2,3)))# [[0. 0. 0.]#  [0. 0. 0.]]print(np.eye(3,3))# [0. 1. 0.]# [0. 0. 1.]]print(np.linspace(1,100,10))# [  1.  12.  23.  34.  45.  56.  67.  78.  89. 100.]print(np.arange(2,10))# [2 3 4 5 6 7 8 9]# 重构形状arr1 = np.zeros((2,6))      #print(arr1.reshape((3,4)))      # 重构形状必须相乘的 相等# [[0. 0. 0. 0.]#  [0. 0. 0. 0.]#  [0. 0. 0. 0.]]# numpy 数组运算# +-*/arr = np.ones((3,4)) * 4print(arr)# [[4. 4. 4. 4.]#  [4. 4. 4. 4.]#  [4. 4. 4. 4.]]arr = np.ones((3,4)) + 4print(arr)# [[5. 5. 5. 5.]#  [5. 5. 5. 5.]#  [5. 5. 5. 5.]]# numpy 数组运算函数      了解——————-print(np.sin(arr))# [[-0.95892427 -0.95892427 -0.95892427 -0.95892427]#  [-0.95892427 -0.95892427 -0.95892427 -0.95892427]#  [-0.95892427 -0.95892427 -0.95892427 -0.95892427]]# 矩阵运算 --  点乘arr1 = np.array([    [1,6]])arr2 = np.array([    [1,2],5],[6,7]])print(np.dot(arr1,arr2))# [[27 33]#  [60 75]]# 求逆arr = np.array([[1,[9,9]])print(np.linalg.inv(arr))# [[ 0.5        -1.          0.5       ]#  [-3.          3.         -1.        ]#  [ 2.16666667 -1.66666667  0.5       ]]# numpy 数组数学和统计方法arr = np.array([    [1,6]])print(np.sum(arr[:,:]))# 21# 生成随机数print(np.random.rand(3,4))# [[0.76654824 0.23510842 0.79989748 0.93094884]#  [0.97155472 0.29956374 0.27754847 0.91103403]#  [0.43714323 0.7549109  0.14547903 0.20511579]]print(np.random.random((3,4)))# [[0.91673193 0.15218486 0.32976182 0.41812734]#  [0.33360061 0.20190749 0.48689467 0.46679115]#  [0.12490532 0.50441629 0.95525997 0.5402791 ]]# 针对一维 随机选择数字print(np.random.choice([1,1))# [1]# 追对某一范围print(np.random.randint(1,(3,4)))# [[33 40 93 18]#  [80 65 64 51]#  [66  6 83 10]]
matplotlib 模块

matplotlib 模块 就是用来画图的

# 条形图from matplotlib import pyplot as pltfrom matplotlib.Font_manager import FontPropertIEs# 设置字体,不然画出来会乱码Font = FontPropertIEs(fname=r"C:\windows\Fonts\simsun.ttc")# 设置背景plt.style.use("ggplot")# 定义 行 列 信息clas = ["3班","4班","5班","6班"]students = [50,55,45,60]clas_index = range(len(clas))# 开始画plt.bar(clas_index,students,color="darkblue")plt.xlabel("学生",FontPropertIEs=Font)plt.xlabel("学生人数",FontPropertIEs=Font)plt.Title("班级-学生人数",FontPropertIEs=Font,Fontsize=25,Fontweight=20)plt.xticks(clas_index,clas,FontPropertIEs=Font)# 展示plt.show()

# 直方图import numpy as npfrom matplotlib import pyplot as pltfrom matplotlib.Font_manager import FontPropertIEs# 设置字体,不然画出来会乱码Font = FontPropertIEs(fname=r"C:\windows\Fonts\simsun.ttc")plt.style.use("ggplot")# 生成随机数对象x1 = np.random.randn(10000)x2 = np.random.randn(10000)# 生成画布fig = plt.figure()# 每行每列ax1 = fig.add_subplot(1,1)ax2 = fig.add_subplot(1,2)ax1.hist(x1,bins=50,color="darkblue")ax2.hist(x2,color="y")fig.supTitle("两个正太分布",Fontsize=20)ax1.set_Title("x1的正态分布",FontPropertIEs=Font)ax2.set_Title("x2的正态分布",FontPropertIEs=Font)# 展示plt.show()

# 折线图import numpy as npfrom matplotlib import pyplot as pltfrom matplotlib.Font_manager import FontPropertIEs# 设置字体,不然画出来会乱码Font = FontPropertIEs(fname=r"C:\windows\Fonts\simsun.ttc")plt.style.use("ggplot")np.random.seed(10)x1 = np.random.randn(40).cumsum()x2 = np.random.randn(40).cumsum()x3 = np.random.randn(40).cumsum()x4 = np.random.randn(40).cumsum()plt.plot(x1,color="r",line,marker="o",label="红圆线")plt.plot(x2,color="y",line,marker="*",label="黄虚线")plt.plot(x3,color="b",line,marker="s",label="蓝方线")plt.plot(x4,color="black",line,label="黑方线")plt.legend(loc="best",prop=Font)# 展示plt.show()

# 散点图 + 直线图import numpy as npfrom matplotlib import pyplot as plt  # 约定俗成from matplotlib.Font_manager import FontPropertIEs  # 修改字体# 设置字体,不然画出来会乱码Font = FontPropertIEs(fname='C:\windows\Fonts\simsun.ttc')plt.style.use('ggplot')fig = plt.figure()ax1 = fig.add_subplot(1,2)x = np.arange(20)y = x ** 2x2 = np.arange(20)y2 = x2 ** 2ax1.scatter(x,y,label="红")ax2.scatter(x2,y2,label="蓝")ax1.plot(x,y)ax2.plot(x2,y2)fig.supTitle("两张图",Fontsize=15)ax1.set_Title("散点图",FontPropertIEs=Font)ax2.set_Title("折线图",FontPropertIEs=Font)ax1.legend(prop=Font)# 展示plt.show()

pandas 模块

pandas 模块 *** 作excel/Json/sql/ini/csv文件的

import pandas as pdimport numpy as npnp.random.seed(10)# 生成6个月份index = pd.date_range("2019-01-01",periods=6,freq="M")print(index)columns = ["c1","c2","c3","c4"]# 生成随机数val = np.random.randn(6,4)df = pd.DataFrame(index=index,columns=columns,data=val)print(df)#                   c1        c2        c3        c4# 2019-01-31  1.331587  0.715279 -1.545400 -0.008384# 2019-02-28  0.621336 -0.720086  0.265512  0.108549# 2019-03-31  0.004291 -0.174600  0.433026  1.203037# 2019-04-30 -0.965066  1.028274  0.228630  0.445138# 2019-05-31 -1.136602  0.135137  1.484537 -1.079805# 2019-06-30 -1.977728 -1.743372  0.266070  2.384967# 保存成 xlsx 文件df.to_excel("date_c.xlsx")# 读出文件df = pd.read_excel("date_c.xlsx",index_col=[0])print(df)#                   c1        c2        c3        c4# 2019-01-31  1.331587  0.715279 -1.545400 -0.008384# 2019-02-28  0.621336 -0.720086  0.265512  0.108549# 2019-03-31  0.004291 -0.174600  0.433026  1.203037# 2019-04-30 -0.965066  1.028274  0.228630  0.445138# 2019-05-31 -1.136602  0.135137  1.484537 -1.079805# 2019-06-30 -1.977728 -1.743372  0.266070  2.384967###############print(df.index)print(df.columns)print(df.values)print(df[['c1','c2']])# 按照index取值# print(df['2019-01-31'])print(df.loc['2019-01-31'])print(df.loc['2019-01-31':'2019-05-31'])# 按照values取值print(df)print(df.iloc[0,0])df.iloc[0,:] = 0print(df)
总结

以上是内存溢出为你收集整理的Python-数据分析模块全部内容,希望文章能够帮你解决Python-数据分析模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1190890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存