数据的采集与分析科目的期末复习

文章涵盖了大数据的基本特征,如数据量大、类型多、产生速度快和价值密度低。讨论了数据采集面临的问题,如数据源多样性、数据质量和重复性。提到了数据预处理的步骤,包括数据清理、集成、规约和变换。还涉及Python编程示例、爬虫工作原理、正则表达式以及数据存储类型,如块存储、文件存储和对象存储。此外,文章还讨论了数据清洗、数据标准化和数据抽取流程,并举例展示了Python中的数据处理库Pandas的使用。最后,提到了数据可视化的方法和标准,以及数据库的关联关系和不同类型的图表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据的采集与分析科目的期末复习

大数据概论

特征

  • 数据量大
  • 数据类型多
  • 数据产生速度快
  • 数据价值密度低

数据量大

数据规模从TB–>PB(拍字节)

数据类型多

  • 结构化 : 数据库中的数据遵循某种规则
  • 半结构化 : 有一定的关系和约束,但是本质上不存在关系的数据
  • 非结构化 : 不规则不完整地数据

数据产生速度快

  • 数据产生快
  • 数据处理快

数据价值密度低

数据海量,但是价值密度低

数据采集

主要问题

  • 数据源多种多样
  • 数据量大,变化快
  • 如何保证数据采集的可靠性
  • 如何避免数据重复
  • 如何保证数据的质量

数据预处理

  1. 数据清理: 清理数据噪声,纠正不一致
  2. 数据集成: 多个数据源合并成一个数据存储
  3. 数据规约: 降低数据规模,通过聚集,删除冗余 ,聚类
  4. 数据变换: 压缩到较小空间,提高挖掘算法的效率和准确率

python

c = 'B' #大写转小写
d = chr(ord('a') + ( ord(c) - ord('A') ) )
print(d)
------------------------------------------
c = 'c' #小写转大写
d = chr(ord('A') + ( ord(c) - ord('a') ) )
print(d)

列表常用函数

list.append()
list.extend()
list.count()
list.index(obj)
list.insert(index,obj)
list.remove()
del list[index]
list.pop[index = -1]
list.sort()
list.reverse()

spider

HTTP操作

  1. 客户端与服务器建立链接
  2. 客户端发送一个请求给服务器,URL + 协议版本号 + MIME…
  3. 服务器收到请求后,给予反应,返回响应信息
  4. 客户端收到返回信息,用浏览器显示信息,然后断开和服务器链接

爬虫工作流程

  1. 发送请求
  2. 获取相应的信息
  3. 解析内容
  4. 保存数据

正则表达式

  • 替换数字
  • 替换指定内容
  • 删除空格
  • 删除指定字符

Scrapy

组成
  • Scrapy Engine
  • Scheduler
  • Downloader
  • Spiders
  • Item pipeline
  • Downloader middle_wares
  • Spider middle_wares

在这里插入图片描述

爬虫开发流程

  1. 新建项目
  2. 确定抓取网页
  3. 指定爬虫
  4. 设计管道存储爬取内容

数据库

实体间的联系

  • 一对一
  • 一对多
  • 多对多

数据可视化

方法和组成

  1. 数据空间: 对多属性多元素的数据集构成多维数据空间
  2. 数据开发 利用一定工具和算法对数据进行推演和计算
  3. 数据分析 切块,切片,旋转…对角度观察数据
  4. 数据可视化 将大量的数据以图片图像的形式展示

可视化的标准

  1. 实用性
  2. 完整性
  3. 真实性
  4. 艺术性
  5. 交互性

表格类型

  • 柱状图,K线图,直方图
  • 散点图,气泡图,热力图
  • 饼图,环图
  • 折线图,趋势图,
  • 雷达图,色块图,
  • 仪表盘,词云,漏斗图

数据存储与清洗

块存储,文件存储,对象存储

块存储

  • DAS
  • SAN
  • 云存储

文件存储

  • NAS

对象存储

  • 对象(object)
  • 对象存储设备(OSD)
  • 元数据服务器
  • 客户端(client)

数据存储方式

**分布式存储,NoSQL数据库,NewSQL,云数据库 **

数据清洗

  • 一致性检查
  • 无效值和缺失值处理
    • 估算
    • 整例删除
    • 变量删除
    • 成对删除

数据标准化

  • min-max
  • z-score
  • Decimal -scaling

数据抽取

流程
  • 理解数据来源
  • 整理检查和清洗数据
  • 集成清洗好的数据,建立抽取模型
  • 数据抽取和转换
  • 将结果临时存放
  • 最终确认并应用于数据挖掘

代码

# 导入 numpy 模块,它提供了很多用于处理数值数据的功能,虽然在这个特定的代码中没有直接用到。
import numpy as np

# 导入 pandas 模块,它提供了很多数据处理和分析的功能。
import pandas as pd


# 创建一个 DataFrame,有两列,分别为 'level1' 和 'number1'。'level1' 列的值为 ['a', 'b', 'c', 'd'],'number1' 列的值为 [1, 3, 5, 7]。
data1 = pd.DataFrame({'level1' : ['a', 'b', 'c', 'd'], 'number1' : [1, 3, 5, 7]})

# 创建另一个 DataFrame,有两列,分别为 'level2' 和 'number2'。'level2' 列的值为 ['a', 'b', 'c', 'e'],'number2' 列的值为 [2, 4, 6, 8]。
data2 = pd.DataFrame({'level2' : ['a', 'b', 'c', 'e'], 'number2' : [2, 4, 6, 8]})

# 合并两个 DataFrame。合并的方式为:在 data1 中找到 'level1' 列,在 data2 中找到 'level2' 列,合并它们相同的值。
# 这里的相同值为 'a', 'b' 和 'c',所以合并后的 DataFrame 会包含这三个值的所有信息。
# 'd' 只在 data1 中出现,'e' 只在 data2 中出现,所以合并后的 DataFrame 不包含 'd' 和 'e' 的信息。
print(pd.merge(data1, data2, left_on='level1', right_on= 'level2'))

# 导入 numpy 模块,它提供了很多用于处理数值数据的功能,虽然在这个特定的代码中没有直接用到。
import numpy as np

# 导入 pandas 模块,它提供了很多数据处理和分析的功能。
import pandas as pd

# 使用 pandas 创建一个 DataFrame。DataFrame 是 pandas 里的一个主要数据结构,类似于一个表格。
# 这个 DataFrame 有三列('col1','col2','col3')和两行(索引为 'a' 和 'b')。
df = pd.DataFrame([[1,2,3], [4,5,6]], columns= ['col1', 'col2', 'col3'], index= ['a','b'])

# 打印出 DataFrame 的内容。
print(df)

# 重新索引 DataFrame,添加 'c' 和 'd' 两个新的行索引。
# 由于这两行在原始数据中没有对应的值,所以新添加的行的值都会是 NaN。
df = df.reindex(['a', 'b', 'c', 'd'])

# 删除名称为 'col3' 的列。注意,这里的 axis 参数设为 1,
# 表示删除的是列,而不是行(默认情况下 axis 为 0,表示删除行)。
df = df.drop(['col3'], axis = 1)

# 打印出经过删除操作后的 DataFrame 的内容。
print(df)

# 导入 pandas 模块,它提供了很多数据处理和分析的功能。
import pandas as pd

# 导入 numpy 模块,它提供了很多用于处理数值数据的功能,虽然在这个特定的代码中没有直接用到。
import numpy as np

# 使用 pandas 创建一个 DataFrame。DataFrame 是 pandas 里的一个主要数据结构,类似于一个表格。
# 这个 DataFrame 有三列('col1','col2','col3')和两行(索引为 'a' 和 'b')。
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns = ['col1', 'col2', 'col3'], index = ['a', 'b'])

# 打印出 DataFrame 的内容。
print(df)

# 重新索引 DataFrame,添加 'c' 和 'd' 两个新的行索引。
# 由于这两行在原始数据中没有对应的值,所以新添加的行的值都会是 NaN。
df = df.reindex(['a', 'b', 'c', 'd'])

# 删除索引为 'a' 的行。
df = df.drop('a')

# 打印出经过删除操作后的 DataFrame 的内容。
print(df)

# 导入 pandas 模块,我们将使用它创建和处理 DataFrame。
import pandas as pd

# 导入 numpy 模块,它提供了很多用于处理数值数据的功能,尽管在这段代码中没有直接使用到。
import numpy as np

# 创建一个 DataFrame 对象。DataFrame 是 pandas 中的一个基本结构,可以看作是一个表格。
# 这里,我们用一个二维列表来创建 DataFrame,并指定列名(columns)和行索引(index)。
# 列名为 'col1'、'col2' 和 'col3',行索引为 'a' 和 'b'。
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns= ['col1', 'col2', 'col3'], index= ['a', 'b'])

# 这一行并不做任何事情,因为它只是 df 对象的一个引用,但是没有赋值或者打印操作。
# 在一些交互式Python解释器环境中(比如 Jupyter notebook),它会显示 df 的内容。如果想答应需要print(df)
df

# 使用 reindex 方法对 DataFrame 进行重新索引。这将改变 DataFrame 的行索引。
# 在这个例子中,我们添加了 'c' 和 'd' 两个新的行索引。因为对于这两个索引,我们并没有提供对应的数据,
# 所以其对应的列数据会被填充为 NaN。
df = df.reindex(['a', 'b', 'c', 'd'])
# 一定要将df.reindex()的结果重新赋值给df,因为这个函数是重新创造了一个df,
# 并没有在原来的df上进行修改,但是在一些交互式Python解释器环境中,df.reindex()会直接显示修改后的结果的内容,
# 但实际上并没有修改原来的df。

# 使用 print 函数打印 df 的内容。这将显示出 DataFrame 的当前状态,包括 'c' 和 'd' 两行的 NaN 数据。
print(df)

#关于集成开发环境pycharm和交互式解释器环境Jupyter notebook代码执行结果的区别在后面几个文件中不再赘述!
import matplotlib.pyplot as plt  # 导入matplotlib库的pyplot模块,用于数据可视化,简称为plt
import numpy as np  # 导入numpy库,用于数据处理,简称为np

x = np.random.rand(100)  # 生成一个包含100个在[0, 1)范围内的随机数的一维数组,赋值给变量x
y = np.random.rand(100)  # 生成一个包含100个在[0, 1)范围内的随机数的一维数组,赋值给变量y

plt.scatter(x, y)  # 使用matplotlib库的pyplot模块的scatter函数,根据x和y的值绘制出散点图

plt.show()  # 展示生成的散点图

import matplotlib.pyplot as plt  # 导入matplotlib库的pyplot模块,用于数据可视化,简称为plt
import numpy as np  # 导入numpy库,用于数据处理,简称为np

x = np.arange(10)  # 生成0到9的整数序列
y = np.random.randint(0, 20, 10)  # 在0-19之间生成10个随机整数

plt.bar(x, y)  # 使用matplotlib库的pyplot模块的bar函数,根据x和y绘制出柱状图
plt.show()  # 展示生成的柱状图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值