- 数据很大程度上决定了机器学习算法和深度学习算法实践时的效果,Python作为在ML和DL最受欢迎的语言,学会Python的数据分析尤为重要。Python数据分析的主要内容是 如何调包(包括:numpy、pandas、matplotlib等),具体表现为: python数据基本操作、操作数据库或者excel表、数据可视化(不仅仅是画画折线图,还要会前后端Vue.js+Django)、数据分析
Python3数据分析(待更新)
python3回顾
- python中可以分为六种数据类型:数值、字符串、列表、字典、元组、集合
-
- 数值类型int、float、bool、complex,使用
type(var)或者isinstance(var, type)来判断变量类型。二者的区别在面向对象中体现:type()只认自己的类型,isinstance()认父类类型。
- 数值类型int、float、bool、complex,使用
-
- 字符串
str()=""='':主要操作为索引(a[1])和切片(a[1:10:2]),python中字符串不能改变,没有append等操作。
- 字符串
-
- 列表
list()=[]: 主要操作为索引、切片、增删改
- 列表
-
- 元组
tuple()=():主要操作为索引和切片,其与列表类似,但是元组内元素不能被修改。以上三种都是sequence序列
- 元组
-
- 集合
set()={}:主要操作为集合运算、关系测试等。创建空集合不能用{},因为{}是创建一个空字典,集合是无序的,不能使用索引。
- 集合
-
- 字典
dic()={}:主要操作为索引(通过键值索引,以此键值必须是唯一的不可变的,不能通过位置索引,因为字典是无序的)等。
- 字典
- 总结:由于有序的关系,对于str、list、tuple来说很重要的操作是切片和索引,索引值范围:
0 ~ n = -1-n ~ -1,可以使用类似于索引的方式切片也可以使用var.spilt()的方式来切片。集合会自动去除重复元素,字典通过键值索引,以此导致键值的一系列特性:不可变且唯一,索引方式与前三种相同(通过var[key]索引)。
操作数据表
操作excel/csv
csv是纯文本文件,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符,excel可以直接导出csv文件。
- 操作csv
- 操作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
- pandas:
操作数据库——以mysql为例
数据可视化
画图
matplotlib
- 实例
- 默认使用一个窗口/画板,如果使用多个窗口/画板,需要类似
fig1=plt.figure()的操作,在某个窗口内操作则使用fig1而非pltsubplot(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
- 实例
2378

被折叠的 条评论
为什么被折叠?



