Python数据分析

数据很大程度上决定了机器学习算法和深度学习算法实践时的效果,Python作为在ML和DL最受欢迎的语言,学会Python的数据分析尤为重要。Python数据分析的主要内容是 如何调包(包括:numpy、pandas、matplotlib等),具体表现为: python数据基本操作、操作数据库或者excel表、数据可视化(不仅仅是画画折线图,还要会前后端Vue.js+Django)、数据分析

python3回顾

  • python中可以分为六种数据类型:数值、字符串、列表、字典、元组、集合
    1. 数值类型int、float、bool、complex,使用type(var)或者isinstance(var, type)来判断变量类型。二者的区别在面向对象中体现:type()只认自己的类型,isinstance()认父类类型。
    1. 字符串str()=""='':主要操作为索引(a[1])和切片(a[1:10:2]),python中字符串不能改变,没有append等操作。
    1. 列表list()=[]: 主要操作为索引、切片、增删改
    1. 元组tuple()=():主要操作为索引和切片,其与列表类似,但是元组内元素不能被修改。以上三种都是sequence序列
    1. 集合set()={}:主要操作为集合运算、关系测试等。创建空集合不能用{},因为{}是创建一个空字典,集合是无序的,不能使用索引。
    1. 字典dic()={}:主要操作为索引(通过键值索引,以此键值必须是唯一的不可变的,不能通过位置索引,因为字典是无序的)等。
  • 总结:由于有序的关系,对于str、list、tuple来说很重要的操作是切片和索引,索引值范围:0 ~ n = -1-n ~ -1,可以使用类似于索引的方式切片也可以使用var.spilt()的方式来切片。集合会自动去除重复元素,字典通过键值索引,以此导致键值的一系列特性:不可变且唯一,索引方式与前三种相同(通过var[key]索引)。

操作数据表

操作excel/csv

csv是纯文本文件,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符,excel可以直接导出csv文件。

  • 操作csv
    • pandas:pandas在使用中,涉及read_csv()to_csv()两个读写操作,官方文档中的示例中没有用到with open() as *:,查阅资料后发现,在pandas中读写csv不是必须的,但是为了统一,还是都用with open() as *:比较好。
    • csv:是python的内置包,使用csv.reader()csv.writer()进行读写。
    • 其他:由于是文本文件,还可以使用numpy进行读写。
  • 操作excel
    • pandas:read_excel()方法使用Python的xlrd模块来读取Excel 2003(.xls)版的文件,而Excel 2007+ (.xlsx)版本的是用xlrd或者openpyxl模块来读取的。to_excel() 方法则是用来把DataFrame数据存储为Excel格式。一般来说,它的语法同使用csv (opens new window)数据是类似的.
    • xlrd、xlwt、openpyxl

操作数据库——以mysql为例

数据可视化

画图

matplotlib

  • 实例
    • 默认使用一个窗口/画板,如果使用多个窗口/画板,需要类似fig1=plt.figure()的操作,在某个窗口内操作则使用fig1而非plt
    • subplot(a, b, c)=subplot(abc),在写完所有子图之前除非调试,否则不要调用plt.show(),不然只会显示前面子图。
    • 出现编解码错误考虑参数encoding
    • 画散点图使用plt.scatter()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data_csv = "SoC_U_I.csv"

with open(data_csv, encoding='utf-8') as f:
    data = pd.read_csv(f)
    data_SoC = data.loc[:, 'SOC(%)']        # get SoC column
    data_U = data.loc[:, '电池总电压(V)']   # get U column   
    data_I = data.loc[:, '充放电电流(A)']   # get I column

    frame = [data_SoC, data_U, data_I]      # get frame list
    data2 = pd.concat(frame, axis=1)        # axis=1 -> horizonly,axis=0 -> vertically
    data2.columns = ['SoC(%)', 'U(V)', 'I(A)']
    data2.to_csv('SoC_U_I_only.csv', index=False, encoding='gbk')

# SoC~U
plt.subplot(131)
plt.scatter(data_U, data_SoC)
plt.title("SoC-U")
plt.xlabel('U/V')
plt.ylabel('SoC/%')

# SoC~I
plt.subplot(132)
plt.scatter(data_I, data_SoC)
plt.title("SOC-I")
plt.xlabel('I/A')
plt.ylabel('SoC/%')

# U~I
plt.subplot(133)
plt.scatter(data_I, data_U)
plt.title("U-I")
plt.xlabel('I/A')
plt.ylabel('U/V')
plt.show()

corr1 = data_SoC.corr(data_U)
print(corr1)
corr2 = data_SoC.corr(data_I)
print(corr2)
corr3 = data_U.corr(data_I)
print(corr3)

在这里插入图片描述

pyecharts

  • 实例

Vue.js+Django(前后端分离)

Vue.js

Django

参考

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值