- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
本项目所用数据集包含了一个家庭6个月的用电数据,收集于2007年1月至2007年6月。 这些数据包括有功功率、无功功率、电压、电流强度、分项计量1(厨房)、分项计量2(洗衣房)和分项计量3(电热水器和空调)等信息。该数据集共有260,640个测量值,可以为了解家庭用电情况提供重要的见解.
我们要感谢databeats团队提供这个数据集。如果你在你的研究中使用这个数据集,请注明原作者:Georges Hébrail 和 Alice Bérard.
字段含义对照表:
列名 说明 Date 日期 Time 时间 Globalactivepower 除分项计量外所消耗的总有功功率(千瓦) Globalreactivepower 该家庭消耗的总无功功率(千瓦) Voltage 向家庭输送电力的电压(伏特) Global_intensity 输送到家庭的平均电流强度(安培) Submetering1 厨房消耗的有功功率(千瓦) Submetering2 洗衣房所消耗的有功功率(千瓦) Submetering3 电热水器和空调所消耗的有功功率(千瓦) 数据来源: https://www.kaggle.com/datasets/thedevastator/240000-household-electricity-consumption-records 。
其他说明: 有功功率是保持用电设备正常运行所需的电功率,也就是将电能转换为其他形式能量(机械能、光能、热能)的电功率。比如:5.5千瓦的电动机就是把5.5千瓦的电能转换为机械能,带动水泵抽水或脱粒机脱粒;各种照明设备将电能转换为光能,供人们生活和工作照明。无功功率比较抽象,它是用于电路内电场与磁场的交换,并用来在电气设备中建立和维持磁场的电功率。它不对外作功,而是转变为其他形式的能量。凡是有电磁线圈的电气设备,要建立磁场,就要消耗无功功率。比如40瓦的日光灯,除需40多瓦有功功率(镇流器也需消耗一部分有功功率)来发光外,还需80乏左右的无功功率供镇流器的线圈建立交变磁场用。由于它不对外做功,才被称之为“无功”.
import numpy as np
import pandas as pd
from pyecharts.charts import *
import pyecharts.options as opts
from statsmodels.tsa.seasonal import seasonal_decompose
import matplotlib.pyplot as plt
# plt.rcParams['axes.unicode_minus']=False
# plt.rcParams['font.sans-serif'] = ['SimHei']```
# 数据路径
data_path = r'/home/mw/input/Household_Electricity4767/household_power_consumption.csv'
# 读取数据
df = pd.read_csv(data_path,index_col='index')
# 预览数据
df.head()
输出结果:
index | Date | Time | Global_active_power | Global_reactive_power | Voltage | Global_intensity | Sub_metering_1 | Sub_metering_2 | Sub_metering_3 |
---|---|---|---|---|---|---|---|---|---|
0 | 16/12/2006 | 17:24:00 | 4.216 | 0.418 | 234.840 | 18.400 | 0.000 | 1.000 | 17.000 |
1 | 16/12/2006 | 17:25:00 | 5.360 | 0.436 | 233.630 | 23.000 | 0.000 | 1.000 | 16.000 |
2 | 16/12/2006 | 17:26:00 | 5.374 | 0.498 | 233.290 | 23.000 | 0.000 | 2.000 | 17.000 |
3 | 16/12/2006 | 17:27:00 | 5.388 | 0.502 | 233.740 | 23.000 | 0.000 | 1.000 | 17.000 |
4 | 16/12/2006 | 17:28:00 | 3.666 | 0.528 | 235.680 | 15.800 | 0.000 | 1.000 | 17.000 |
# 将列名替换为中文
df.rename(columns={
'Date': '日期',
'Time': '时间',
'Global_active_power': '有功功率',
'Global_reactive_power': '无功功率',
'Voltage': '电压',
'Global_intensity': '电流',
'Sub_metering_1': '厨房的有功功率',
'Sub_metering_2': '洗衣房的有功功率',
'Sub_metering_3': '电热水器和空调的有功功率',
},inplace=1)
# 再次预览前5行数据
df.head() # 列名改成中文顺眼多了
输出结果:
日期 | 时间 | 有功功率 | 无功功率 | 电压 | 电流 | 厨房的有功功率 | 洗衣房的有功功率 | 电热水器和空调的有功功率 |
---|---|---|---|---|---|---|---|---|
16/12/2006 | 17:24:00 | 4.216 | 0.418 | 234.84 | 18.4 | 0.0 | 1.0 | 17.0 |
16/12/2006 | 17:25:00 | 5.36 | 0.436 | 233.63 | 23.0 | 0.0 | 1.0 | 16.0 |
16/12/2006 | 17:26:00 | 5.374 | 0.498 | 233.29 | 23.0 | 0.0 | 2.0 | 17.0 |
16/12/2006 | 17:27:00 | 5.388 | 0.502 | 233.74 | 23.0 | 0.0 | 1.0 | 17.0 |
16/12/2006 | 17:28:00 | 3.666 | 0.528 | 235.68 | 15.8 | 0.0 | 1.0 | 17.0 |
0、为什么这样导包? a:这样导包的主要原因是为了方便使用这些库中的函数和类。具体来说:
- `import numpy as np`:将`numpy`库导入,并将其命名为`np`,这样我们在调用`numpy`库中的函数或类时,可以使用`np`作为前缀,比如`np.array()`。
- `import pandas as pd`:将`pandas`库导入,并将其命名为`pd`,这样我们在调用`pandas`库中的函数或类时,可以使用`pd`作为前缀,比如`pd.DataFrame()`。
- `from pyecharts.charts import *`:从`pyecharts.charts`模块中导入所有的类和函数,这样我们在调用`pyecharts`库中的函数或类时,可以直接使用其名称,比如`Line()`。
- `import pyecharts.options as opts`:将`pyecharts.options`模块导入,并将其命名为`opts`,这样我们在调用`pyecharts`库中的选项时,可以使用`opts`作为前缀,比如`opts.Title()`。
- `from statsmodels.tsa.seasonal import seasonal_decompose`:从`statsmodels.tsa.seasonal`模块中导入`seasonal_decompose`函数,这样我们在调用该函数时,可以直接使用其名称。
- `import matplotlib.pyplot as plt`:将`matplotlib.pyplot`模块导入,并将其命名为`plt`,这样我们在调用`matplotlib`库中的函数或类时,可以使用`plt`作为前缀,比如`plt.plot()`。
- `plt.rcParams['axes.unicode_minus']=False`和`plt.rcParams['font.sans-serif'] = ['SimHei']`:这两行代码是为了设置`matplotlib`库的显示参数,使得中文可以正常显示,并且减少负号显示的问题。
1、pyecharts.options这个模块是做什么的? a: pyecharts.options 模块是 pyecharts 库中的一个子模块,主要用于定义可视化图形的各种选项参数,例如图形的标题、坐标轴的标签、图例的样式等等。 pyecharts 库是一个基于 echarts 库的Python可视化库,提供了多种类型的可视化图表,包括柱状图、折线图、散点图、地图等等, pyecharts.options 模块的作用就是为这些图表提供各种选项参数,以便用户可以根据自己的需求来自定义图表的外观和样式。例如,可以使用 opts.Title() 函数来设置图表的标题,使用 opts.Legend() 函数来设置图例的样式,使用 opts.Toolbox() 函数来添加工具栏等等。这些选项参数可以通过链式调用来设置,例如:
from pyecharts.charts import Bar
import pyecharts.options as opts
bar = Bar()
bar.add_xaxis(["A", "B", "C", "D", "E"])
bar.add_yaxis("Series", [10, 20, 30, 40, 50])
bar.set_global_opts(title_opts=opts.Title(text="Bar Chart", subtext="Example"),
legend_opts=opts.Legend(pos_right="10%"),
toolbox_opts=opts.Toolbox())
bar.render("bar.html")
上面的代码中,我们使用 opts.Title() 函数设置了图表的标题,使用 opts.Legend() 函数设置了图例的位置,使用 opts.Toolbox() 函数添加了工具栏,并将这些选项参数传递给 set_global_opts() 方法来设置全局选项。 2、pyecharts.charts呢? a: pyecharts.charts 模块是 pyecharts 库中的一个子模块,主要用于创建各种类型的可视化图表,例如柱状图、折线图、散点图、地图等等。 pyecharts 库是一个基于 echarts 库的Python可视化库,提供了多种类型的可视化图表, pyecharts.charts 模块的作用就是为这些图表提供各种方法和属性,以便用户可以根据自己的需求来创建和自定义图表。例如,可以使用 Line() 函数创建一个折线图,然后使用 add_xaxis() 函数和 add_yaxis() 函数来添加数据,最后使用 set_global_opts() 函数来设置图表的全局选项,如下所示:
from pyecharts.charts import Line
import pyecharts.options as opts
line = Line()
line.add_xaxis(["A", "B", "C", "D", "E"])
line.add_yaxis("Series", [10, 20, 30, 40, 50])
line.set_global_opts(title_opts=opts.Title(text="Line Chart", subtext="Example"),
legend_opts=opts.Legend(pos_right="10%"))
line.render("line.html")
上面的代码中,我们使用 Line() 函数创建了一个折线图,使用 add_xaxis() 函数和 add_yaxis() 函数添加了数据,使用 set_global_opts() 函数设置了图表的标题和图例位置,并将这些选项参数传递给 set_global_opts() 方法来设置全局选项。最后,使用 render() 函数将图表渲染成HTML文件。 3、from statsmodels.tsa.seasonal import seasonal_decompose呢? a: from statsmodels.tsa.seasonal import seasonal_decompose 这行代码是从 statsmodels.tsa.seasonal 模块中导入了 seasonal_decompose 函数。 statsmodels 是一个Python库,提供了各种统计模型和方法,包括时间序列分析、回归分析、统计模型检验等等。 tsa 是 time series analysis 的缩写,表示时间序列分析,其中 seasonal 表示季节性分析, seasonal_decompose 函数用于对季节性时间序列进行分解,将其分解为趋势、季节和残差三个部分。这个函数的主要作用是帮助用户了解时间序列数据的季节性变化趋势,从而更好地进行数据分析和预测。在使用该函数时,需要将时间序列数据作为函数的参数传递进去,并指定季节周期的长度。例如:
from statsmodels.tsa.seasonal import seasonal_decompose
import pandas as pd
# 创建一个季节性时间序列
data = pd.DataFrame({'date': pd.date_range(start='2022-01-01', end='2022-12-31', freq='D'),
'value': [i % 7 + 1 for i in range(365)]})
# 对时间序列进行季节性分解
result = seasonal_decompose(data['value'], model='additive', period=7)
# 输出分解结果
print(result.trend)
print(result.seasonal)
print(result.resid)
print(result.observed)
上面的代码中,我们首先创建了一个季节性时间序列,然后使用 seasonal_decompose() 函数对其进行季节性分解,其中 model 参数指定了分解模型,可以是 additive 或 multiplicative , period 参数指定了季节周期的长度,这里我们指定为7,表示一周的周期。最后,我们输出了分解结果中的趋势、季节和残差三个部分,以及原始数据。 4、import matplotlib.pyplot as plt这个呢? a: import matplotlib.pyplot as plt 是将 matplotlib.pyplot 模块导入,并将其命名为 plt ,这样我们在调用 matplotlib 库中的函数或类时,可以使用 plt 作为前缀,比如 plt.plot() 。 matplotlib 是一个Python绘图库,提供了各种类型的图表,包括线性图、散点图、柱状图、饼图等等, pyplot 是 matplotlib 库中的一个子模块,提供了一些方便的函数和工具,可以帮助用户更方便地进行图表绘制和数据可视化。例如,可以使用 plot() 函数来绘制线性图,使用 scatter() 函数来绘制散点图,使用 bar() 函数来绘制柱状图等等。以下是一个简单的例子:
import matplotlib.pyplot as plt
# 创建数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
# 绘制线性图
plt.plot(x, y)
# 添加标题和坐标轴标签
plt.title("Line Chart")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
# 显示图表
plt.show()
上面的代码中,我们首先创建了一个包含5个数据点的线性数据,然后使用 plot() 函数绘制了这些数据的线性图,使用 title() 函数、 xlabel() 函数和 ylabel() 函数添加了标题和坐标轴标签,最后使用 show() 函数显示图表。 5、df = pd.read_csv(data_path,index_col='index'),index_col是什么? a: index_col 是 pandas.read_csv() 函数中的一个参数,用于指定将哪一列作为数据的索引(行标签)。默认情况下, read_csv() 函数会自动为数据生成一个整数索引,但是在某些情况下,我们可能需要将某一列作为数据的索引,这时就可以使用 index_col 参数。例如,如果我们有一个包含日期和数值的CSV文件,想要将日期作为数据的索引,可以使用以下代码:
import pandas as pd
data_path = 'data.csv'
df = pd.read_csv(data_path, index_col='date')
在上面的代码中,我们使用 read_csv() 函数读取了一个CSV文件,并将其中的 date 列作为数据的索引。这样,我们就可以通过日期来索引和操作数据了。如果不指定 index_col 参数,则默认使用第一列作为数据的索引。 6、索引是用来干嘛的,为什么要指定? a:索引是用来标识和访问数据的标签或键,它可以帮助我们更方便地对数据进行操作和分析。在 pandas 库中,索引分为行索引和列索引两种。行索引用于标识和访问数据行,列索引用于标识和访问数据列.
在 pandas 中,数据的索引可以由用户指定,也可以由系统自动生成。如果数据没有指定索引,则默认使用从0开始的整数索引。但是,在某些情况下,我们可能需要根据数据的特性或需求来指定索引,例如,如果数据中包含日期或时间等信息,我们可以将其作为索引,便于按时间序列进行分析和操作;如果数据中有某一列唯一标识每个数据项,则可以将其作为索引,便于按照该列进行数据查找和聚合.
指定索引可以让我们更方便地访问和操作数据,例如,可以通过索引来选择特定的行或列,可以通过索引来对数据进行排序、切片、分组和聚合等操作。因此,在读取数据时,根据数据的特性和需求来指定索引是一个很好的选择。 7、rcParams 。
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['font.sans-serif'] = ['SimHei']:
这两行代码是为了设置matplotlib库的显示参数,使得中文可以正常显示,并且减少负号显示的问题。
8、inplace = 1什么意思? a: inplace 是 pandas 库中很多方法的一个可选参数,用于指示是否将修改应用到原DataFrame中。如果 inplace=True ,则会直接在原DataFrame上进行修改,并返回 None ;如果 inplace=False (默认值),则会返回一个新的DataFrame,原DataFrame不会改变.
使用 inplace=True 可以提高代码的效率,避免在内存中创建新的对象,特别是当数据集很大时。但是,需要注意的是,这样会直接修改原始数据,可能会影响到后续的操作。因此,在使用 inplace 参数时,需要谨慎考虑是否需要在原始数据上进行修改.
在上面的代码中,使用了 inplace=1 ,这相当于 inplace=True ,表示直接在原DataFrame上进行修改.
最后此篇关于【数据分析】针对家庭用电数据进行时序分析(1)的文章就讲到这里了,如果你想了解更多关于【数据分析】针对家庭用电数据进行时序分析(1)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
从以下网站,我找到了执行java AD身份验证的代码。 http://java2db.com/jndi-ldap-programming/solution-to-sslhandshakeexcepti
似乎 melt 会使用 id 列和堆叠的测量变量 reshape 您的数据框,然后通过转换让您执行聚合。 ddply,从 plyr 包看起来非常相似..你给它一个数据框,几个用于分组的列变量和一个聚合
我的问题是关于 memcached。 Facebook 使用 memcached 作为其结构化数据的缓存,以减少用户的延迟。他们在 Linux 上使用 UDP 优化了 memcached 的性能。 h
在 Camel route ,我正在使用 exec 组件通过 grep 进行 curl ,但使用 ${HOSTNAME} 的 grep 无法正常工作,下面是我的 Camel 路线。请在这方面寻求帮助。
我正在尝试执行相当复杂的查询,在其中我可以排除与特定条件集匹配的项目。这是一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我正在尝试执行相当复杂的查询,我可以在其中排除符合特定条件集的项目。这里有一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我发现了很多嵌入/内容项目的旧方法,并且我遵循了在这里找到的最新方法(我假设):https://blog.angular-university.io/angular-ng-content/ 我正在尝试
我正在寻找如何使用 fastify-nextjs 启动 fastify-cli 的建议 我曾尝试将代码简单地添加到建议的位置,但它不起作用。 'use strict' const path = req
我正在尝试将振幅 js 与 React 和 Gatsby 集成。做 gatsby developer 时一切看起来都不错,因为它发生在浏览器中,但是当我尝试 gatsby build 时,我收到以下错
我试图避免过度执行空值检查,但同时我想在需要使代码健壮的时候进行空值检查。但有时我觉得它开始变得如此防御,因为我没有实现 API。然后我避免了一些空检查,但是当我开始单元测试时,它开始总是等待运行时异
尝试进行包含一些 NOT 的 Kibana 搜索,但获得包含 NOT 的结果,因此猜测我的语法不正确: "chocolate" AND "milk" AND NOT "cow" AND NOT "tr
我正在使用开源代码共享包在 iOS 中进行 facebook 集成,但收到错误“FT_Load_Glyph failed: glyph 65535: error 6”。我在另一台 mac 机器上尝试了
我正在尝试估计一个标准的 tobit 模型,该模型被审查为零。 变量是 因变量 : 幸福 自变量 : 城市(芝加哥,纽约), 性别(男,女), 就业(0=失业,1=就业), 工作类型(失业,蓝色,白色
我有一个像这样的项目布局 样本/ 一种/ 源/ 主要的/ java / java 资源/ .jpg 乙/ 源/ 主要的/ java / B.java 资源/ B.jpg 构建.gradle 设置.gr
如何循环遍历数组中的多个属性以及如何使用map函数将数组中的多个属性显示到网页 import React, { Component } from 'react'; import './App.css'
我有一个 JavaScript 函数,它进行 AJAX 调用以返回一些数据,该调用是在选择列表更改事件上触发的。 我尝试了多种方法来在等待时显示加载程序,因为它当前暂停了选择列表,从客户的 Angul
可能以前问过,但找不到。 我正在用以下形式写很多语句: if (bar.getFoo() != null) { this.foo = bar.getFoo(); } 我想到了三元运算符,但我认
我有一个表单,在将其发送到 PHP 之前我正在执行一些验证 JavaScript,验证后的 JavaScript 函数会发布用户在 中输入的文本。页面底部的标签;然而,此消息显示短暂,然后消失...
我是一名优秀的程序员,十分优秀!