数据处理知识点

数据处理

对python数据处理相关的知识点进行总结

1. 常用的数据处理的库有哪些

  1. pandas:提供了数据结构和数据分析工具,支持多种数据格式的读取和写入,如 CSV、JSON、SQL 等。
  2. numpy:提供了高效的数组计算和操作,支持多种数学运算和统计分析。支持多维数组和矩阵运算
  3. matplotlib:提供了数据可视化工具,支持多种图形绘制,如折线图、柱状图、散点图等。
  4. scikit-learn:提供了机器学习算法和工具,支持数据预处理、特征选择、模型训练和评估等。
  5. TensorFlow:提供了深度学习框架和工具,支持神经网络的构建、训练和部署等。

2. pandas库怎么去做切分

## 将一列进行拆分
# 对 Name 列进行拆分,按照空格进行拆分
split_df = df['Name'].str.split()
# 将拆分后的结果保存到 DataFrame 中
split_df = df['Name'].apply(lambda x: x.split())

## 将行列进行切分
# 使用loc方法进行行的切分
row1 = df.loc[0]
# 使用iloc方法进行行的切分
row1 = df.iloc[0]
# 使用loc方法进行列的切分
column1 = df.loc[:, 'A']
# 使用iloc方法进行列的切分
column1 = df.iloc[:, 0]

3. pandas库怎么去做合并

# 合并两个 DataFrame
merged_df = pd.merge(df1, df2, on='A')
# 使用 concat()方法进行合并
concat_df = pd.concat([df1, df2], axis=1)
# 使用 join() 方法进行连接
joined_df = df1.join(df2, on=key)
# 使用 merge_asof() 方法进行合并
merged_df = pd.merge_asof(df1, df2, on=key)

4. numpy库基本操作有哪些

import numpy as np

# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])
# 创建矩阵
m = numpy.mat([[1, 2], [3, 4]])
# 创建张量(Tensor)
numpy.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# 创建记录数组(Record Array)
numpy.recarray([('name', 'John'), ('age', 30), ('gender', 'M')])
# 数组的运算
arr + arr
arr * 2
# 数组的广播
arr2 = np.array([10, 20, 30, 40, 50])
arr + arr2
# 数组的转置
np.transpose(arr)
# 数组的排序
arr.sort()
# 数组的聚合
np.sum(arr)
np.mean(arr)
# 获取数组的元素个数
size = arr.size
# 获取数组的数据类型
dtype = arr.dtype
# 创建一个全零数组
arr = np.zeros((3, 4))
# 创建一个全一数组
arr = np.ones((3, 4))
# 创建一个随机数组,数组中的每个元素都服从 0 到 1 之间的均匀分布
arr = np.random.rand(3, 4)
# 创建一个随机数组,数组中的每个元素都服从正态分布,正态分布的均值为 0,标准差为 1
arr = np.random.normal(0, 1, (3, 4))
# 创建一个 3x3 的单位矩阵
arr = np.eye(3)
# 创建一个 3x3 的对角矩阵,对角线元素为 1,2,3
arr = np.diag([1, 2, 3])


# 创建一个 2x2 的矩阵
matrix = np.array([[1,2],[3,4]])
# 查看矩阵的维度
matrix_diemsion = matrix.ndim
# -> 2

# 创建一个 2x2 的矩阵
matrix = np.array([[1,2],[3,4]])
# 查看矩阵的形状
matrix_shape = matrix.shape
# -> (2, 2)

5. numpy库的数据结构是什么

numpy库的数据结构主要有以下几种:

  1. 数组(Array):numpy中的基本数据结构,用于存储多个相同类型的数据元素。数组可以是一维的,也可以是多维的。
  2. 矩阵(Matrix):numpy中的一种特殊类型的数组,通常用于表示二维数据。矩阵是一个二维数组,其中每个元素都是一个标量。
  3. 张量(Tensor):numpy中的一种广义数据结构,可以表示任意维度的数据。张量是一个多维数组,可以看作是矩阵的推广。
  4. 记录数组(Record Array):numpy中的一种特殊类型的数组,用于存储结构化数据。记录数组中的每个元素都是一个结构化对象,可以包含多个字段。
  5. 集合(Set):numpy中的一种特殊类型的数组,用于存储无序的唯一元素。集合中的元素可以是任何类型的数据。

6. 常用的数据可视化的库有哪些

  1. Matplotlib:这是一个非常流行的 Python 数据可视化库,提供了各种绘图功能,如折线图、柱状图、散点图等。
  2. Pygal:这是一个用于生成动态、可交互的图表的 Python 库,它可以生成各种类型的图表,如折线图、柱状图、饼图等。
  3. Pygal:这是一个用于生成动态、可交互的图表的 Python 库,它可以生成各种类型的图表,如折线图、柱状图、饼图等。
  4. Pygal:这是一个用于生成动态、可交互的图表的 Python 库,它可以生成各种类型的图表,如折线图、柱状图、饼图等。
  5. Pyecharts:这是一个用于生成可视化图表的 Python 库,它提供了各种类型的图表,如折线图、柱状图、饼图、雷达图、箱线图等。

7. 怎么处理类别不平衡?

类别不平衡问题可以通过过采样、欠采样、生成新样本、集成学习等方法来解决:

  1. 过采样方法包括随机过采样、SMOTE等;
  2. 欠采样方法包括随机欠采样、Tomek Links等;
  3. 生成新样本方法包括GAN、VAE等;
  4. 集成学习方法包括Bagging、Boosting等。

8. 数据样本不平衡的时候怎么办?

  • 一一一一一一一一一一一一一一一一一一一一一一一
    当数据样本不平衡时,即某些类别的数据比其他类别多很多,这可能会导致模型的性能下降。以下是几种处理数据不平衡的方法:
    1. 过采样:
  • 对少数类别的样本进行复制,以增加它们在数据集中的数量。这可以通过随机复制少数类别的样本或者使用合成数据来实现。
    2. 欠采样:
  • 从多数类别的样本中随机选择一些样本,并将其从数据集中删除。这可以减少多数类别的数量,从而提高少数类别的比例。
    3. 数据增强:
  • 对少数类别的样本进行数据增强,例如旋转、缩放、翻转等,以增加它们在数据集中的数量。
    4. 不同的损失函数:
  • 对于不平衡的数据集,可以使用不同的损失函数,例如 F1 分数、精度和召回率等。这些损失函数可以更好地反映模型在不平衡数据集上的性能。
    5. 集成学习:
  • 集成学习可以将多个模型组合在一起,以提高模型的性能。在不平衡数据集上,可以使用不同的模型,并将它们的结果组合在一起,以提高模型的性能。
    7. 聚类算法:
  • 聚类算法可以将数据集分成多个簇,然后对每个簇进行单独处理。这种方法可以将少数类别的样本集中在一起,从而提高它们在数据集中的比例。
    8. 异常检测算法:
  • 异常检测算法可以将少数类别的样本识别为异常点,并对其进行单独处理。这种方法可以将少数类别的样本从数据集中分离出来,从而提高它们在数据集中的比例。
    9. 生成对抗网络(GAN):
  • GAN 可以生成新的样本,从而增加数据集中的样本数量。在不平衡数据集上,可以使用 GAN 生成少数类别的样本,从而提高它们在数据集中的比例。
    10. 迁移学习:
  • 迁移学习可以将已有的知识和模型应用到新的数据集上。在不平衡数据集上,可以使用已有的平衡数据集上的模型,并对其进行微调,以适应新的数据集。

9. 了解数据挖掘的方法嘛?

数据挖掘包括数据预处理、特征工程、模型构建和模型评估等步骤:

  1. 其中,数据预处理包括数据清洗、数据集成、数据变换和数据规约;
  2. 特征工程包括特征提取、特征选择和特征构建;
  3. 模型构建包括选择合适的模型和模型参数调优;
  4. 模型评估包括模型效果评估和模型泛化能力评估。

10. 如何处理一个数据存在的空值、重复值、错值?

  • 一一一一一一一一一一一一一一一一一一一一一一一
    1. 处理空值
  • 识别空值:使用isnull()或isna()函数。
  • 删除空值:使用dropna()函数。
  • 填充空值:使用fillna()函数。可以选择用0、均值、中位数、众数等来填充。
    2. 处理重复值:
  • 识别重复值:使用duplicated()函数。/djuːplɪkeɪtɪd/
  • 删除重复值:使用drop_duplicates()函数。
    3. 处理错值:
  • 识别错值:通常需要根据实际情况自定义识别逻辑,可使用正则表达式。
  • 替换错值:可以使用replace()函数或者条件语句来替换错值。

Pandas实现

import pandas as pd
import numpy as np

# 示例数据
data = {
    'A': [1, 2, np.nan, 4, 5, 5],
    'B': [np.nan, 'b', 'c', 'd', 'e', 'e'],
    'C': [10, 20, 30, 20, np.nan, 60],
    'D': ['x', 'y', 'y', 'z', 'z', 'm']
}

df = pd.DataFrame(data)

# 处理空值
print("处理空值前:")
print(df)

# 填充空值(这里使用0进行填充,也可以选择其他填充方式,如均值、中位数、众数等)
df.fillna(0, inplace=True)
print("\n处理空值后:")
print(df)

# 处理重复值
print("\n处理重复值前:")
print(df)

# 删除重复行(也可以选择保留最后一个重复行,或者根据某列进行重复值的删除)
df.drop_duplicates(inplace=True)
print("\n处理重复值后:")
print(df)

# 处理错值(这里假设值大于50的为错值,将其替换为50)
print("\n处理错值前:")
print(df)

df['C'] = df['C'].where(df['C'] <= 50, 50)
print("\n处理错值后:")
print(df)

除了使用pandas库,还有其他多种方式可以实现。以下是一些建议的方法:

  • 一一一一一一一一一一一一一一一一一一一一一一一
    1. 对于空值的处理:

  • 可以使用数据库查询语言(如SQL)中的COALESCE函数或IFNULL函数来填充空值。

  • 在Python中,还可以使用NumPy库来处理空值,例如使用np.nan表示空值,并使用NumPy的相关函数进行填充或删除。
    对于重复值的处理:

  • 在数据库中,可以使用DISTINCT关键字或GROUP BY子句来去除重复值。

  • 在Python中,除了pandas的duplicated()方法,还可以使用集合(set)数据结构来去除重复元素,或者使用字典(dict)的键来存储不重复的值。
    2. 对于错值的处理:

  • 可以使用条件语句(如SQL中的WHERE子句或Python中的if语句)来筛选出错值,并进行相应的修正或删除。

  • 在Python中,还可以使用正则表达式库re来匹配和替换错误的字符串模式。

此外,对于大规模数据的处理,可以考虑使用分布式计算框架,如Apache Spark。Spark提供了强大的数据处理能力,并且支持多种语言(如Scala、Python、Java等),可以高效地处理空值、重复值和错值。

11. 怎么用python的方式,查找一亿条数据里面的重复值?

使用Apache Spark读取数据:使用Spark的SparkSession创建一个分布式计算环境,并使用spark.read方法读取大数据文件。Spark支持多种数据源,包括CSV、Parquet、JSON等。

from pyspark.sql import SparkSession

# 创建一个SparkSession
spark = SparkSession.builder.appName("Duplicate Detection").getOrCreate()

# 读取大数据文件,这里假设文件为CSV格式,且文件名为'big_data.csv'
# 根据实际情况,你可能需要调整文件路径和格式
df = spark.read.csv('big_data.csv', header=True, inferSchema=True)

# 查找重复值
duplicates = df.duplicated()

# 打印重复值的数量
duplicate_count = duplicates.sum()
print(f"重复值的数量: {duplicate_count}")

# 如果需要查看具体的重复行,可以使用以下代码
# 注意:在大数据场景下,直接展示所有重复行可能不太现实,因为数据量可能非常大
# 可以考虑将结果写入到文件或者数据库中,或者使用分页的方式展示部分数据
duplicate_rows = df.filter(duplicates)
duplicate_rows.show()

# 如果需要将重复行保存到文件,可以使用以下代码
duplicate_rows.write.csv('duplicate_rows.csv', header=True)

# 停止SparkSession
spark.stop()

Spark是一种快速、通用的大规模数据处理计算引擎。专为大规模数据处理而设计的。Spark具有Hadoop MapReduce所具有的优点。

但与其不同的是,Spark的Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,这使得Spark能更好地适用于数据挖掘与机器学习等需要迭代的算法。Spark也可以用来构建大型的、低延迟的数据分析应用程序。

简单来说,Spark是一个开源集群计算环境,类似于Hadoop,但在某些工作负载方面表现得更加优越。它启用了内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载。

虽然Spark是为了支持分布式数据集上的迭代作业而创建的,但它实际上是对Hadoop的补充,可以在Hadoop文件系统中并行运行。通过名为Mesos的第三方集群框架可以支持此行为。

对Apache Spark不太熟悉,也可以考虑使用其他大数据处理工具或平台,比如Hadoop、Dask等。这些工具也提供了类似的功能,并且有自己的优势和适用场景。

12. python中的浅拷贝和深拷贝是什么?

在Python中,它们的主要区别在于,复制对象时处理对象内部子对象的方式不同。

浅拷贝只复制对象本身和对象内的基本数据类型,如果对象内部还有子对象,则复制的是子对象的引用,而不是子对象本身。因此,如果修改子对象,则会影响原始对象和复制后的对象。在Python中,可以使用copy模块中的copy函数来实现浅拷贝。

深拷贝会复制对象本身和对象内的所有子对象,包括子对象的子对象。修改复制后的对象不会影响原始对象。在Python中,可以使用copy模块中的deepcopy函数来实现深拷贝。

# 浅拷贝示例
import copy

original_list = [1, 2, [3, 4]]
shallow_copied_list = copy.copy(original_list)

print("原始列表:", original_list)
print("浅拷贝列表:", shallow_copied_list)

# 修改原始列表中的嵌套列表
original_list[2][0] = 5

print("修改后的原始列表:", original_list)
print("浅拷贝列表(也受到影响,因为是浅拷贝):", shallow_copied_list)

# 深拷贝示例
original_list = [1, 2, [3, 4]]
deep_copied_list = copy.deepcopy(original_list)

print("原始列表:", original_list)
print("深拷贝列表:", deep_copied_list)

# 修改原始列表中的嵌套列表
original_list[2][0] = 6

print("修改后的原始列表:", original_list)
print("深拷贝列表(不受影响,因为是深拷贝):", deep_copied_list)
  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值