首页 > 其他分享 >数据处理

数据处理

时间:2024-07-21 22:07:06浏览次数:15  
标签:df 列名 print names 数据处理 csv 数据

数据处理:

主要利用的库

import numpy as np
import pandas as pd

函数的使用:

1.读取:

path = "路径"
c = pd.read_csv(path,sep="")参数sep是数据的分割符号,如果不输入在读取csv文件中将默认为“,”
返回的内容是属于pandas库的特殊数据类型DataFrame。
在读取过程中,该函数会根据给出的数据自行判断数据类型,如果导入的数据类型并不是希望的数据类型,可以通过下面这个函数规定。如下,将column_name这一列的数据规定为int64型
df = pd.read_csv('example.csv', dtype={'column_name': 'int64'})

如果文件没有列名,我们也可以通过先构建一个
names列表储存列名利用read中的names参数来添加列名。

df.rename(columns={'A': 'X', 'B': 'Y'})
其中字典的key值为原列名,value为修改后的列名。
df = pd.read_csv('example.csv',names=names)# 前一个names是参数名,后一个是具体参数。
需要特别注意的是,如果数据本身有列名,本身的列名会被挤去第二行,另外。names中的列名,会与实际的列名右对齐,也就是说,如果数据的列数大于names中名字的个数,左侧的几列数据会出现没有添加列名的情况。

df2 = pd.read_table('df.csv',sep=',')# 与read_csv类似,不同的是,他的读取对象的分隔符号默认为空格,csv的默认分隔符号位','当然,我们也可以用sep参数调整分隔符号。

2.观察数据

df 为已经读取的数据

df.info() 查看的数据为其中每列的数据类型,以及数据中的非空缺的数值数目。
# 输出内容为数据的列名,每列数据的数量,数据类型# 不需要print也能够输出相应信息。
df.describe() # 输出的内容为每列的
        count: 非NA/非空值的数量。
        mean: 平均值(均值)。
        std: 标准差(标准偏差)。
        min: 最小值。
        25%: 第一四分位数(Q1),即数据集中最小的25%的数据的最大值。
        50%: 中位数(第二四分位数,Q2)。
        75%: 第三四分位数(Q3),即数据集中最大的25%的数据的最小值。
        max: 最大值。
# 如果要提取这些数字我们可以 a = df[列名].max()/mean()/std()
df.columns表示为df数据的列名 # 在处理数据时我们也可以通过
# df.columns = names # 来将列名替换成names中的数据,此时names中的列名量必须等于df中的列数。


df.head(3) # 显示前三行,显示的比较全面。
df.tail(3) # 显示后三行



指定观察用iloc或者loc:两者的序号并不是index的序号数,而是该数据的行数。



# iloc : 利用列的序号锁定列
# 获取第一行的数据
row1 = df.iloc[0]
print(row1)

# 获取第二列的数据
col2 = df.iloc[:, 1]
print(col2)

# 获取第二行第二列的单个值
value = df.iloc[1, 1]
print(value)

# 获取多个行和多个列的数据
selected = df.iloc[[0, 2], [0, 2]]
print(selected)



# loc,利用列名锁定列,行名
row1 = df.loc[1]
print(row1)

# 获取第二列的数据
col2 = df.loc[:, 'B']
print(col2)

# 获取第二行第二列的单个值
value = df.loc[2, 'B']
print(value)

# 获取多个行和多个列的数据
selected = df.loc[[1, 2], ['A', 'C']]
print(selected)







#####!!!!!重点:利用matplotlib获取信息
import matplotlib.pyplot as plt
bins = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]  # 定义分段的边界
labels = ['0-10', '11-20', '21-30', '31-40','51-60','61-70','71-80','81-90','91-100']  # 定义分段的标签
df1['age_group'] = pd.cut(df1['年龄'], bins=bins, labels=labels, right=False)


age_counts = df1['age_group'].value_counts().sort_index() # 利用参数设置


age_counts.plot(kind='bar', color='skyblue') # 画图


plt.title('Segmented age distribution') # 用中文可能显示不了
plt.xlabel('Age bands')
plt.ylabel('Number')

plt.show() # 显示图形
以柱形图的外貌显现,可以看出大体的年龄分布。

3.数据清洗:

	# 在观察数据之后,我们要清洗的内容包括缺失值,异常值。重复值
    处理缺失值的方法:我们可以将缺失值设定为一个不在数据中存在存在的数值,比如0,-1,也可以设置成bool型的False。
    对于异常值,我们可以根据常识挑选出这些异常值,比如说挑选挑选出网龄大于200岁的数据,或者年龄为负数的人。异常值的处理方式,如果即便删除异常值所在行对最后结果产生影响不大的情况下,我们可以删除异常值所在的一整行数据,比如你有几万个数据,其中的异常值只有一二十,那根据情况,我们可以选择直接删除这一行数据。-->这么做就是直接抹去存在异常值的数据。在对最终结果影响不大的前提下,我们可以通过用正常值的平均值或者中位数来代替这个位置的数据 --> 如果这样处理的话,程序的分析内容将减小异常值的影响,从而在这一行分析除了异常意外列的数据对结果的影响。
    处理重复值
    df.drop.duplicates("列名",keep="first")# 保留重复的第一个
    a = df[df[列名] > 100]
    此时a即为在df某一列中满足该列数字大于100的所有的行,前提:此处的数据类型应为确切的整形。
    df[列名].isnull() 将返回该列名下数据为0的那一整行
    利用isnull可以区分出缺失值
    

4.数据处理

df = df.frop_duplicates(["x",'y'])# 找出xy两列的组合方式
df.groupby(['x','y'])
df['体力'] = df['体力'].apply(lambda x:"high" if int(x) > 100 else 'low' if int(x) < 50 else 'mid')集体调整数字

# 替换列名的方法
1.替换
(1)
columnses = {
    '旧列名1' : 'new1',
    'old2' : 'new2'
}
df = pd.read_csv("df.csv")
df.rename(columns=colmuns, inplace=True)

(2)
df.column = columnses

2.在引入数据时替换:
names = ['new1','new2']
df = pd.read_csv('example.csv',names=names,header=None)
# header表明,不引入第一行,在这里的第一行就是列名


5数据整理:

df = df.sort_values(by='列名',ascending=False).reset_index(drop=True) # ascending=False: 表示降序排序。如果设置为True,则表示升序排序。
# reset_index(drop=True)的 作用是使序号重新排列,如果不进行这一步,iloc或者loc过程中较难找到相应的序号。
# reset_index(): 会重置数据框的索引。默认情况下,重置索引会将旧索引添加为数据框的一个列。
# drop=True: 表示在重置索引时,不将旧索引添加为数据框的一个列。这样可以避免数据框中出现重复的索引列。
df = df.sert_index(ascending=False) 按照序号排序
df = df.sort_values(by=['列名1','列名2'],ascending=[False,True]).reset_index(drop=True)# ascending参数可以只写一个,也可以每个都写,先排序列名1如果列名1相同,则在列名1相同的数据中排列列名2.


未完待续!

标签:df,列名,print,names,数据处理,csv,数据
From: https://www.cnblogs.com/zonghongqi/p/18315039

相关文章

  • 激光雷达数据处理
    激光雷达技术以其高精度、高效率的特点,已经成为地表特征获取、地形建模、环境监测等领域的重要工具。掌握激光雷达数据处理技能,不仅可以提升工作效率,还能够有效提高数据的质量和准确性,为决策提供可靠的数据支持。随着激光雷达技术在地理信息系统(GIS)、遥感和测绘领域的广泛应用......
  • 学习数据处理的三要点
    (只是用MapReduce举例,只要是数据处理任何工具都可以从这三点去学习 ) 用MapReduce做数据分析处理或统计等这类和数据进行交互处理的编程计算可简单归纳出几个要点:1.弄清要处理的数据进行程序的结构首先第一个要弄清楚的就是你的程序读取进来的数据是什么样子的,是什么......
  • Java中的流式数据处理与Apache Flink应用
    Java中的流式数据处理与ApacheFlink应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨如何使用Java与ApacheFlink进行流式数据处理。ApacheFlink是一个开源的流处理框架,支持大规模数据流的实时处理和分析。它以其高性能、低延迟和强大......
  • 基于Python星载气溶胶数据处理与反演分析
    在当前全球气候变化和环境污染问题日益突出的背景下,气溶胶研究显得尤为重要。气溶胶在大气中由直径范围在0.01微米至10微米固体和液体颗粒构成,直接或间接影响地球辐射平衡、气候变化和空气质量。尤其在“碳中和”目标的驱动下,研究气溶胶对“碳中和”的气候影响及其环境效应,不仅......
  • 【稳定检索】2024年数据处理与人工智能国际会议(ICDPAI 2024)
    2024年数据处理与人工智能国际会议2024InternationalConferenceonDataProcessingandArtificialIntelligence【1】会议简介        2024年数据处理与人工智能国际会议是数据处理和人工智能领域的一次重要盛会。会议旨在通过全球范围内专家学者的深入交流,探......
  • 数据处理
    数据处理:主要利用的库importnumpyasnpimportpandasaspd函数的使用:1.读取:path="路径"c=pd.read_csv(path,sep="")参数sep是数据的分割符号,如果不输入在读取csv文件中将默认为“,”返回的内容是属于pandas库的特殊数据类型DataFrame。在读取过程中,该函数会根据......
  • Java中的大规模数据处理与MapReduce设计
    Java中的大规模数据处理与MapReduce设计大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!随着数据规模的不断增大,大规模数据处理变得越来越重要。在Java领域,MapReduce作为一种经典的数据处理模型,在处理海量数据时展现了强大的能力。本文将介绍如何在Java中......
  • 常见的SQL数值型数据处理函数
    在数据驱动的时代,SQL已成为数据分析和管理中不可或缺的工具。无论是处理简单的查询还是复杂的数据分析,SQL都能帮助我们高效地完成任务。然而,在处理数值型数据时,你是否感到过困惑,不知道如何运用SQL中的各种函数来实现数据处理? 究竟有哪些常见的SQL数值型数据处理函数,它......
  • Python文件与数据处理:掌握I/O操作与序列化的艺术
    在Python编程的世界里,文件操作和数据序列化犹如画家手中的画笔和调色板,是构建强大应用程序不可或缺的工具。本文将深入探讨open()函数的巧妙使用、JSON和pickle模块的序列化魔法,以及os模块在文件系统操作中的关键角色。让我们一同揭开Python文件与数据处理的神秘面纱,掌握I/O操......
  • 8-基于双TMS320C6678 + XC7K420T的6U CPCI Express高速数据处理平台 双DSP 6U CPCI架
    基于双TMS320C6678+XC7K420T的6UCPCIExpress高速数据处理平台 1、板卡概述板卡由北京太速科技自主研发,基于6UCPCI架构,处理板包含双片TIDSPTMS320C6678芯片;一片Xilinx公司FPGAXC7K420T-1FFG1156芯片;六个千兆网口(FPGA两个,DSP四个);DSP与FPGA之间Rap......