精华内容
下载资源
问答
  • SQL SERVER:删除筛选记录中前100条数据
    千次阅读
    2019-09-27 21:47:07
    delete from table1 where id in (select top 100 id from table1)
    

      

    转载于:https://www.cnblogs.com/axu92312/p/8487681.html

    更多相关内容
  • 在一个表格中,筛选某一项的数值结果,将筛选结果的数据删掉。 涉及功能 筛选、定位、删除行 操作步骤 1、筛选 筛选可以选择指定值,也可以选择一个数值区间。 2、定位 选中筛选的结果,使用快捷键Ctrl +...

    期望结果

    在一个表格中,筛选某一项的数值结果,将筛选结果的数据行删掉。

    涉及功能

    筛选、定位、删除行

    操作步骤

    1、筛选

    筛选可以选择指定值,也可以选择一个数值区间。

    2、定位

    选中筛选的结果,使用快捷键Ctrl + G,弹出定位对话框,然后选择定位条件。

    在定位条件中选择:仅可见单元格。

     

     3、删除行

    在选中的单元格左侧右键弹出菜单,点击删除行即可。

     删完之后发现怎么没数据了?  将筛选条件清除,其它条件的数据就出来了。

    展开全文
  • 试验数据筛选和质量可视化

    千次阅读 2021-02-18 22:50:00
    试验数据筛选和质量可视化前言一、试验数据筛选二、试验数据质量的可视化1.引入库2.读入数据总结 前言 在试验过程中,试验员经常会在试验中获得三个以上的试验数据,在数据处理时再从多个重复中挑选,通常会...


    前言

      在试验过程中,试验员经常会在试验中获得三个以上的试验数据,在数据处理时再从多个重复中挑选,通常会挑选三个,进行统一的计算方差等数据处理。这个挑选的过程如果通过人为筛选较为费时低效,可以通过脚本计算方差的方式自动选出最接近的三个数值。
      数据筛选出来之后,还需要以最快的方式的知数据的质量。因为试验材料通常具有时效性,并且如果是使用大型仪器测量的话,仪器的使用时间严格控制。因此在最短的时间内获得数据的质量,有助于试验员及时补测。


    一、试验数据的筛选

    问题背景

      在试验中,为了让数据更具有可靠性,试验员需要在试验中设置了3个以上的重复。但是平常的方差分析等,只需要3个数据就可以了。因此试验员常常需要在各个重复中选出最为接近的三个数据。这个过程是必须以计算为基础的,直观上很难快速看出数据的接近程度,并且试验通常处理数较多,各处理的数据需要单独筛选,使得筛选过程单调复杂。但是如果能够将筛选数据的方法用脚本表达出来,这将大大简化数据筛选的效率,节省试验员的时间。

    解决思路

    本文构想的数据筛选方法有两种:

    1. 基于排序和差值的筛选方法:将重复数据先按照升/降序排列,然后计算相邻数据的差值,再计算相邻两个差值的和,和最小的相邻三个数据即是重复性最好的三个数据。
    2. 基于排列组合和平均值的筛选方法:使用排列组合的方法获得从重复数据中选出三个数据的所有组合,然后分别计算每个组合的平均值和方法,方差最小并且平均值最接近总体平均值的组合即是重复性最好的组合。

    脚本实现:

    基于上诉第二种方法:

    import pandas as pd
    import numpy as np
    import sys
    import argparse
    
    #排列组合起始函数,参数准备
    def getSubLists(lis=[], m=0):
        allAns = []
        ans = [None for i in range(m)]
        subLists(lis, m, ans, allAns)
        return allAns
    #使用迭代的方式实现排列组合
    def subLists(lis=[], m=0, ans=[], allAns=[]):
    	#迭代终点
        if m == 0:
            allAns.append(ans.copy())
            return
        #确认参数长度无误
        if len(lis)<m:
            print("short list!")
            return
        length = len(lis)
        #迭代循环
        for iter in range(length-m+1):
            ans[-m] = lis[iter]
            if iter+1 < length:
                subLists(lis[iter+1:], m-1, ans, allAns)
            else:
                allAns.append(ans.copy())
                return
    #基于第二种方法的数据筛选函数函数
    def selecter(mean, col, allAns=[]):
        df = pd.DataFrame(allAns)
        temp = df
        #计算平均值方差和平均值差
        df['avg'] = temp.mean(axis=1)
        df['std'] = temp.std(axis=1)
        df['d_value'] = abs(df.avg - mean)
        #先进行方差筛选再进行平均值筛选
        df = df[df['std'] == df['std'].min()]
        df = df[df['d_value'] == df['d_value'].min()]
        #清除中间参数
        df.drop(columns=['avg', 'std', 'd_value'], inplace=True)
        #删除原索引,并重新设置索引
        df = df.reset_index(drop=True)
        #当多组数据同时满足上诉条件时,使用第一个满足条件的组合
        if len(df) >1:
            df = df.loc[0]
        #拼接前转置
        df = df.T
        return df
    
    if __name__=='__main__':
    	#参数设置,输入输出文件和筛选中需要需要保留的数据个数
        parser = argparse.ArgumentParser(description="试验数据筛选:")
        parser.add_argument('-i', '--infile', help="初始数据文件路径", required=True)
        parser.add_argument('-o', '--outfile', help="筛选后数据文件路径", required=True)
        parser.add_argument('-m', '--num', type=int, help="要保留的数据个数", default = 3)
        #参数实例化
        args = parser.parse_args()
        #获取原始数据
        orign = pd.read_table(args.infile, sep=',')
        #去除重复序号
        orign.trial = orign.trial.apply(func = lambda x:x[:-2])
        #将样品名(字符型)设置为行索引
        orign.set_index("trial", inplace=True)
        #去重,获取不带重复序号的样品名列表
        indexs = orign.index.drop_duplicates()
        for row in indexs:
            for col in orign.columns:
            	#按照数据框的行索引和列索引获得重复数据
                liss = orign.loc[row, col]
                #获取排列组合
                allAns = getSubLists(liss, args.num)
                #筛选数据
                df = selecter(liss.mean(), col, allAns)
                #同一处理不同指标数据(不同列数据)的拼接
                if col != orign.columns[0]:
                    single = pd.concat([single, df], axis=1)
                else:
                    single = df
            #引入原始数据的列名称
            single.columns = orign.columns
            #插入处理/样品名称(行索引)
            single.insert(loc=0, column='trial', value=row)
            #不同行数据的拼接
            if row == indexs[0]:
                data = single
            else:
                data = pd.concat([data, single])
        #筛选后数据导出
        data.to_excel(args.outfile)
    

    二、试验数据质量的可视化

    1.背景介绍

      在进行液相质谱仪和气相色谱试验时,由于同时检测多个指标,试验数据量很大,试验员除了需要进行快速的试验数据筛选以外,还需要及时的进行数据质量的检查,以便于进行及时的补测。尤其在生命科学试验中,试验材料具有时效性并且实验仪器紧张。因此如果能够在数据筛选后,同样使用脚本可视化的展现出试验数据的质量,这将为该类多指标检测、数据量大的试验提供极大的便利,同时也节省了试验员的时间,提高了效率。

    2.解决思路

      计算数据标准差与平均值的比值,设置5% 、10%两个阈值将数据分为优、良、不合格三个等级,并且分别用绿、黄、红三总背景颜色可视化的表现。

    3.脚本实现

    import pandas as pd
    import numpy as np
    import xlwt
    
    #读取数据文件
    df = pd.read_table("./Download/19suger.csv", sep=",")
    #去除样品名称的重复序号
    df.trial = df.trial.apply(func = lambda x:x[:-2])
    #将样品名设置为行索引便于后续进行运算
    df.set_index("trial", inplace=True)
    #通过行索引进行聚类
    grouped  = df.groupby(by=["trial"])
    gro_dic = {key:"np.mean"  for key in df.columns}
    #计算数据均值
    result_mean  = grouped.aggregate({key:eval(value) for key, value in gro_dic.items()})
    gro_dic = { key:"np.std" for key in df.columns}
    #计算数据标准差
    result_std = grouped.aggregate({ key:eval(value) for key,value in gro_dic.items()})
    #获取数据均值和标准差的比值
    ratio = result_std/result_mean
    
    #初始化,三种背景的设置
    perfect = xlwt.easyxf('pattern: pattern solid, fore_colour green; font: bold on;')
    acceptable  = xlwt.easyxf('pattern: pattern solid, fore_colour yellow; font: bold on;')
    ugly = xlwt.easyxf('pattern: pattern solid, fore_colour red; font: bold on;')
    #重新设置行索引,便于数据的定位和引用
    df=df.reset_index()
    #初始化,创建新的表格并实例化sheet1
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('My Sheet')
    #在表格内写入列索引
    for column in df.columns:
        worksheet.write(0, list(df.columns).index(column), column)
    #在表格内写入行索引
    for index in df.index:
        worksheet.write(index+1, 0, df.trial[index])
    #循环进行阈值判断,设置各组数据的对应单元格的style(背景色)
    for column in df.columns[1:]:
        for index in df.index:
            if ratio.loc[df.loc[index,"trial"], column] < 0.05:
                style = perfect
            elif ratio.loc[df.loc[index,"trial"], column] <0.10:
                style = acceptable
            else:
                style = ugly
            #写入数据并且通过阈值设置背景色
            worksheet.write(index+1, list(df.columns).index(column), df.loc[index, column], style)
    #保存数据表格为xls文件
    workbook.save('Excel_Workbook.xls')
    

    总结

      本文总结了在进行液相质谱仪和气相色谱等数据量较大并且设置重复较多的试验场景的数据特点,并且给出了博主认为高效的处理方法。
      试验员是相关研究领域的求知者和探索者,应该尽可能的利用自身的时间阅读文献关注领域进展思考总结解决关注领域当下存在的问题,而不应该被低效工作所困扰。因此博主认为总结试验过程,分享高效的方法步骤,也是一件非常有意义的事情。
      接下来的假期,博主会总结一下上学期接触到的X-ray重金属检测仪的使用过程,这样上学期使用到的所有仪器就都总结完了。最后博主会用相当长的时间进行这些脚本的Web化,搭建简易的网站,希望能用,能为自己和身边的人提供便利吧。

    展开全文
  • 01 生成数据表第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。获取外部...

    01 生成数据表

    第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。

    8c69e819ac865eb1dabdbdc89fff2c24.png

    获取外部数据

    python 支持从多种类型的数据导入。在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。

    1import numpy as np2import pandas as pd

    导入数据表

    下面分别是从 excel 和 csv 格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考 pandas 的

    官方文档。

    1df=pd.DataFrame(pd.read_csv('name.csv',header=1))2df=pd.DataFrame(pd.read_excel('name.xlsx'))

    创建数据表

    另一种方法是通过直接写入数据来生成数据表,excel 中直接在单元格中输入数据就可以,python 中通过下面的代码来实现。生成数据表的函数是 pandas 库中的 DateFrame 函数,数据表一共有 6 行数据,每行有 6 个字段。在数据中我们特意设置了一些 NA 值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以 DataFrame 的简称 df 来命名数据表。

    1df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],2 "date":pd.date_range('20130102', periods=6),3 "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],4 "age":[23,44,54,32,34,32],5 "category":['100-A','100-B','110-A','110-C','210-A','130-F'],6 "price":[1200,np.nan,2133,5433,np.nan,4432]},7 columns =['id','date','city','category','age','price'])

    这是刚刚创建的数据表,我们没有设置索引列,price 字段中包含有 NA 值,city 字段中还包含了一些脏数据。

    7598696f24c16a6b8bc043a2d9a765e7.png

    df

    02 数据表检查

    第二部分是对数据表进行检查,python 中处理的数据量通常会比较大,比如我们之前的文章中介绍的纽约出租车数据和 Citibike 的骑行数据,数据量都在千万级,我们无法一目了然的 了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。

    数据维度(行列)

    Excel 中可以通过 CTRL+向下的光标键,和 CTRL+向右的光标键来查看行号和列号。Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列。下面是具体的代码。

    1#查看数据表的维度2df.shape3(6, 6)

    数据表信息

    使用 info 函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。

     1#数据表信息 2df.info() 3 4 5RangeIndex: 6 entries, 0 to 5 6Data columns (total 6 columns): 7id 6 non-null int64 8date 6 non-null datetime64[ns] 9city 6 non-null object10category 6 non-null object11age 6 non-null int6412price 4 non-null float6413dtypes: datetime64[ns](1), float64(1), int64(2), object(2)14memory usage: 368.0+ bytes

    查看数据格式

    Excel 中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python 中使用 dtypes 函数来返回数据格式。

    ce44d40abeaad4b956c27d12d3392be9.png

    Dtypes 是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。

     1#查看数据表各列格式 2df.dtypes 3 4id int64 5date datetime64[ns] 6city object 7category object 8age int64 9price float6410dtype: object1112#查看单列格式13df['B'].dtype1415dtype('int64')

    查看空值

    Excel 中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。

    ec6387108ef10b4bb3d64ac79e34e113.png

    查看空值

    Isnull 是 Python 中检验空值的函数,返回的结果是逻辑值,包含空值返回 True,不包含则返回 False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。

    1#检查数据空值2df.isnull()
    49f6dfb5dc7267da9b0bb73168be566d.png

    df_isnull

     1#检查特定列空值 2df['price'].isnull() 3 40 False 51 True 62 False 73 False 84 True 95 False10Name: price, dtype: bool

    查看唯一值

    Excel 中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python 中使用 unique 函数查看唯一值。

    daae0522d88ee415ad89b65089fa3983.png

    查看唯一值

    Unique 是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与 Excel 中删除重复项后的结果。

    1#查看 city 列中的唯一值2df['city'].unique()34array(['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '], dtype=object)

    查看数据表数值

    Python 中的 Values 函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。

     1#查看数据表的值 2df.values 3 4array([[1001, Timestamp('2013-01-02 00:00:00'), 'Beijing ', '100-A', 23, 5 1200.0], 6 [1002, Timestamp('2013-01-03 00:00:00'), 'SH', '100-B', 44, nan], 7 [1003, Timestamp('2013-01-04 00:00:00'), ' guangzhou ', '110-A', 54, 8 2133.0], 9 [1004, Timestamp('2013-01-05 00:00:00'), 'Shenzhen', '110-C', 32,10 5433.0],11 [1005, Timestamp('2013-01-06 00:00:00'), 'shanghai', '210-A', 34,12 nan],13 [1006, Timestamp('2013-01-07 00:00:00'), 'BEIJING ', '130-F', 32,14 4432.0]], dtype=object)

    查看列名称

    Colums 函数用来单独查看数据表中的列名称。

    1#查看列名称2df.columns34Index(['id', 'date', 'city', 'category', 'age', 'price'], dtype='object')

    查看前 10 行数据

    Head 函数用来查看数据表中的前 N 行数据,默认 head()显示前 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前 3 行的数据。

    1`#查看前 3 行数据``df.head(``3``)`
    aa0f9073f2421cf57056f7fb9e3eba15.png

    df_head(3)

    查看后 10 行数据

    Tail 行数与 head 函数相反,用来查看数据表中后 N 行的数据,默认 tail()显示后 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后 3 行的数据。

    1`#查看最后 3 行``df.tail(``3``)`
    aa4ba6dd64b5ac65071d6640d197e950.png

    df_tail(3)

    03 数据表清洗

    第三部分是对数据表中的问题进行清洗。主要内容包括对空值,大小写问题,数据格式和重复值的处理。这里不包含对数据间的逻辑验证。

    处理空值(删除或填充)

    我们在创建数据表的时候在 price 字段中故意设置了几个 NA 值。对于空值的处理方式有很多种,可以直接删除包含空值的数据,也可以对空值进行填充,比如用 0 填充或者用均值填充。还可以根据不同字段的逻辑对空值进行推算。

    Excel 中可以通过“查找和替换”功能对空值进行处理,将空值统一替换为 0 或均值。也可以通过“定位”空值来实现。

    659cffad1ce2e3fe90df665472ef93d3.png

    查找和替换空值

    Python 中处理空值的方法比较灵活,可以使用 Dropna 函数用来删除数据表中包含空值的数据,也可以使用 fillna 函数对空值进行填充。下面的代码和结果中可以看到使用 dropna 函数后,包含 NA 值的两个字段已经不见了。返回的是一个不包含空值的数据表。

    1#删除数据表中含有空值的行2df.dropna(how='any')
    8ba4bbe642366f77ab452721089e1706.png

    df_dropna

    除此之外也可以使用数字对空值进行填充,下面的代码使用 fillna 函数对空值字段填充数字 0。

    1#使用数字 0 填充数据表中空值2df.fillna(value=0)

    我们选择填充的方式来处理空值,使用 price 列的均值来填充 NA 字段,同样使用 fillna 函数,在要填充的数值中使用 mean 函数先计算 price 列当前的均值,然后使用这个均值对 NA 进行填

    充。可以看到两个空值字段显示为 3299.5

     1#使用 price 均值对 NA 进行填充 2df['price'].fillna(df['price'].mean()) 3 40 1200.0 51 3299.5 62 2133.0 73 5433.0 84 3299.5 95 4432.010Name: price, dtype: float64
    463733b0b7255a832b0ba8960970bfcf.png

    df_nan

    清理空格

    除了空值,字符中的空格也是数据清洗中一个常见的问题,下面是清除字符中空格的代码。

    1#清除 city 字段中的字符空格2df['city']=df['city'].map(str.strip)

    大小写转换

    在英文字段中,字母的大小写不统一也是一个常见的问题。Excel 中有 UPPER,LOWER 等函数,python 中也有同名函数用来解决大小写的问题。在数据表的 city 列中就存在这样的问题。我们将 city 列的所有字母转换为小写。下面是具体的代码和结果。

    1#city 列大小写转换2df['city']=df['city'].str.lower()
    dd5454e33df7981e178f4c42f74f3399.png

    lower

    更改数据格式

    Excel 中通过“设置单元格格式”功能可以修改数据格式。Python 中通过 astype 函数用来修改数据格式。

    602a8f2524ebf98aaa75393b3fd44d10.png

    设置单元格格式

    Python 中 dtype 是查看数据格式的函数,与之对应的是 astype 函数,用来更改数据格式。下面的代码中将 price 字段的值修改为 int 格式。

     1#更改数据格式 2df['price'].astype('int') 3 40 1200 51 3299 62 2133 73 5433 84 3299 95 443210Name: price, dtype: int32

    更改列名称

    Rename 是更改列名称的函数,我们将来数据表中的 category 列更改为 category-size。下面是具体的代码和更改后的结果。

    1#更改列名称2df.rename(columns={'category': 'category-size'})
    c35c1f62c686e30e268b127f2e3ba054.png

    df_rename

    删除重复值

    很多数据表中还包含重复值的问题,Excel 的数据目录下有“删除重复项”的功能,可以用来删除数据表中的重复值。默认 Excel 会保留最先出现的数据,删除后面重复出现的数据。

    1aa68ea16909dec2d01224ada49f4b5b.png

    删除重复项

    Python 中使用 drop_duplicates 函数删除重复值。我们以数据表中的 city 列为例,city 字段中存在重复值。默认情况下 drop_duplicates()将删除后出现的重复值(与 excel 逻辑一致)。增加 keep=’last’参数后将删除最先出现的重复值,保留最后的值。下面是具体的代码和比较结果。

    原始的 city 列中 beijing 存在重复,分别在第一位和最后一位。

    1df['city']20 beijing31 sh42 guangzhou53 shenzhen64 shanghai75 beijing8Name: city, dtype: object

    使用默认的 drop_duplicates()函数删除重复值,从结果中可以看到第一位的 beijing 被保留,最后出现的 beijing 被删除。

    1#删除后出现的重复值2df['city'].drop_duplicates()30 beijing41 sh52 guangzhou63 shenzhen74 shanghai8Name: city, dtype: object

    设置 keep=’last‘’参数后,与之前删除重复值的结果相反,第一位出现的 beijing 被删除,保留了最后一位出现的 beijing。

    1#删除先出现的重复值2df['city'].drop_duplicates(keep='last')31 sh42 guangzhou53 shenzhen64 shanghai75 beijing8Name: city, dtype: objec

    数值修改及替换

    数据清洗中最后一个问题是数值修改或替换,Excel 中使用“查找和替换”功能就可以实现数值的替换。

    659cffad1ce2e3fe90df665472ef93d3.png

    查找和替换空值

    Python 中使用 replace 函数实现数据替换。数据表中 city 字段上海存在两种写法,分别为 shanghai 和 SH。我们使用 replace 函数对 SH 进行替换。

    1#数据替换2df['city'].replace('sh', 'shanghai')30 beijing41 shanghai52 guangzhou63 shenzhen74 shanghai85 beijing9Name: city, dtype: object

    本篇文章这是系列的第二篇,介绍第 4-6 部分的内容,数据表生成,数据表查看,和数据清洗。

    98b7703961a276ed02f973f8d7510d87.png

    04 数据预处理

    第四部分是数据的预处理,对清洗完的数据进行整理以便后期的统计和分析工作。主要包括数据表的合并,排序,数值分列,数据分

    组及标记等工作。

    数据表合并

    首先是对不同的数据表进行合并,我们这里创建一个新的数据表 df1,并将 df 和 df1 两个数据表进行合并。在 Excel 中没有直接完成数据表合并的功能,可以通过 VLOOKUP 函数分步实现。在 python 中可以通过 merge 函数一次性实现。下面建立 df1 数据表,用于和 df 数据表进行合并。

    1#创建 df1 数据表2df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008],3"gender":['male','female','male','female','male','female','male','female'],4"pay":['Y','N','Y','Y','N','Y','N','Y',],5"m-point":[10,12,20,40,40,40,30,20]})
    ed40337e4b08ccf7fcf3f238f0ccefde.png

    df1

    使用 merge 函数对两个数据表进行合并,合并的方式为 inner,将两个数据表中共有的数据匹配到一起生成新的数据表。并命名为 df_inner。

    1#数据表匹配合并,inner 模式2df_inner=pd.merge(df,df1,how='inner')
    1288e4020f201c53e43ee601b5830261.png

    df_inner

    除了 inner 方式以外,合并的方式还有 left,right 和 outer 方式。这几种方式的差别在我其他的文章中有详细的说明和对比。

    1#其他数据表匹配模式2df_left=pd.merge(df,df1,how='left')3df_right=pd.merge(df,df1,how='right')4df_outer=pd.merge(df,df1,how='outer')

    设置索引列

    完成数据表的合并后,我们对 df_inner 数据表设置索引列,索引列的功能很多,可以进行数据提取,汇总,也可以进行数据筛选等。

    设置索引的函数为 set_index。

    1#设置索引列2df_inner.set_index('id')
    981434e7267f2bfbc4f14a98d40f51fd.png

    df_inner_set_index

    排序(按索引,按数值)

    Excel 中可以通过数据目录下的排序按钮直接对数据表进行排序,比较简单。Python 中需要使用 ort_values 函数和 sort_index 函数完成排序。

    93a68146a6da49239bb561573af1d2d4.png

    排序

    在 python 中,既可以按索引对数据表进行排序,也可以看制定列的数值进行排序。首先我们按 age 列中用户的年龄对数据表进行排序。

    使用的函数为 sort_values。

    1#按特定列的值排序2df_inner.sort_values(by=['age'])
    ab5b4b2ba2fdb5486157a8ed03d2e771.png

    sort_values

    Sort_index 函数用来将数据表按索引列的值进行排序。

    1#按索引列排序2df_inner.sort_index()
    a0442ade76b95c6dee37c20b6265ae22.png

    sort_index

    数据分组

    Excel 中可以通过 VLOOKUP 函数进行近似匹配来完成对数值的分组,或者使用“数据透视表”来完成分组。相应的 python 中使用 where 函数完成数据分组。

    Where 函数用来对数据进行判断和分组,下面的代码中我们对 price 列的值进行判断,将符合条件的分为一组,不符合条件的分为另一组,并使用 group 字段进行标记。

    1#如果 price 列的值>3000,group 列显示 high,否则显示 low2df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')
    fdba187b5e25220033ed9c547939ef09.png

    where

    除了 where 函数以外,还可以对多个字段的值进行判断后对数据进行分组,下面的代码中对 city 列等于 beijing 并且 price 列大于等于 4000 的数据标记为 1。

    1#对复合多个条件的数据进行分组标记2df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1
    a3bf485ab78f70df11845244966e8ab0.png

    sign

    数据分列

    与数据分组相反的是对数值进行分列,Excel 中的数据目录下提供“分列”功能。在 python 中使用 split 函数实现分列。

    981434e7267f2bfbc4f14a98d40f51fd.png

    数据分列

    在数据表中 category 列中的数据包含有两个信息,前面的数字为类别 id,后面的字母为 size 值。中间以连字符进行连接。我们使用 split 函数对这个字段进行拆分,并将拆分后的数据表匹配回原数据表中。

    1#对 category 字段的值依次进行分列,并创建数据表,索引值为 df_inner 的索引列,列名称为 category 和 size2pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])
    2a886253e5e25293e2d73a479fb2e54e.png

    split

    1#将完成分列后的数据表与原 df_inner 数据表进行匹配2df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
    2e8821c29bd3c64206029191dd2e4e34.png

    merge_1

    05 数据提取

    第五部分是数据提取,也是数据分析中最常见的一个工作。这部分主要使用三个函数,loc,iloc 和 ix,loc 函数按标签值进行提取,iloc 按位置进行提取,ix 可以同时按标签和位置进行提取。下面介绍每一种函数的使用方法。

    按标签提取(loc)

    Loc 函数按数据表的索引标签进行提取,下面的代码中提取了索引列为 3 的单条数据。

     1#按索引提取单行的数值 2df_inner.loc[3] 3id 1004 4date 2013-01-05 00:00:00 5city shenzhen 6category 110-C 7age 32 8price 5433 9gender female10m-point 4011pay Y12group high13sign NaN14category_1 11015size C16Name: 3, dtype: object

    使用冒号可以限定提取数据的范围,冒号前面为开始的标签值,后面为结束的标签值。下面提取了 0 到 5 的数据行。

    1#按索引提取区域行数值2df_inner.loc[0:5]
    981434e7267f2bfbc4f14a98d40f51fd.png

    df_inner_loc1

    Reset_index 函数用于恢复索引,这里我们重新将 date 字段的日期设置为数据表的索引,并按日期进行数据提取。

    1#重设索引2df_inner.reset_index()
    981434e7267f2bfbc4f14a98d40f51fd.png

    reset_index

    1#设置日期为索引2df_inner=df_inner.set_index('date')
    981434e7267f2bfbc4f14a98d40f51fd.png

    set_index_date

    使用冒号限定提取数据的范围,冒号前面为空表示从 0 开始。提取所有 2013 年 1 月 4 日以前的数据。

    1#提取 4 日之前的所有数据2df_inner[:'2013-01-04']
    5525bac21aa46488922dfd08040909b3.png

    按提起提取

    按位置提取(iloc)

    使用 iloc 函数按位置对数据表中的数据进行提取,这里冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从 0 开始。

    1#使用 iloc 按位置区域提取数据2df_inner.iloc[:3,:2]
    42187f3f76fab77499ab1de81c7e3dc4.png

    iloc1

    iloc 函数除了可以按区域提取数据,还可以按位置逐条提取,前面方括号中的 0,2,5 表示数据所在行的位置,后面方括号中的数表示所在列的位置。

    1#使用 iloc 按位置单独提取数据2df_inner.iloc[[0,2,5],[4,5]]
    6204783a5bfdc40ea8a1c5109b6c17ef.png

    iloc2

    按标签和位置提取(ix)

    ix 是 loc 和 iloc 的混合,既能按索引标签提取,也能按位置进行数据提取。下面代码中行的位置按索引日期设置,列按位置设置。

    1#使用 ix 按索引标签和位置混合提取数据2df_inner.ix[:'2013-01-03',:4]
    981434e7267f2bfbc4f14a98d40f51fd.png

    ix

    按条件提取(区域和条件值)

    除了按标签和位置提起数据以外,还可以按具体的条件进行数据。下面使用 loc 和 isin 两个函数配合使用,按指定条件对数据进行提取 。

    使用 isin 函数对 city 中的值是否为 beijing 进行判断。

     1#判断 city 列的值是否为 beijing 2df_inner['city'].isin(['beijing']) 3 4date 52013-01-02 True 62013-01-05 False 72013-01-07 True 82013-01-06 False 92013-01-03 False102013-01-04 False11Name: city, dtype: bool

    将 isin 函数嵌套到 loc 的数据提取函数中,将判断结果为 Ture 数据提取出来。这里我们把判断条件改为 city 值是否为 beijing 和 shanghai。如果是就把这条数据提取出来。

    1#先判断 city 列里是否包含 beijing 和 shanghai,然后将复合条件的数据提取出来。2df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]
    28cb8feecae55bc1f08b87fb1c67b7a9.png

    loc 按筛选条件提取

    数值提取还可以完成类似数据分列的工作,从合并的数值中提取出制定的数值。

     1category=df_inner['category'] 20 100-A 33 110-C 45 130-F 54 210-A 61 100-B 72 110-A 8Name: category, dtype: object 910#提取前三个字符,并生成数据表11pd.DataFrame(category.str[:3])
    e5d358b37de9f850d58696f73bb118ca.png

    category_str

    06 数据筛选

    第六部分为数据筛选,使用与,或,非三个条件配合大于,小于和等于对数据进行筛选,并进行计数和求和。与 excel 中的筛选功能和 countifs 和 sumifs 功能相似。

    按条件筛选(与,或,非)

    Excel 数据目录下提供了“筛选”功能,用于对数据表按不同的条件进行筛选。Python 中使用 loc 函数配合筛选条件来完成筛选功能。配合 sum 和 count 函数还能实现 excel 中 sumif 和 countif 函数的功能。

    981434e7267f2bfbc4f14a98d40f51fd.png

    筛选

    使用“与”条件进行筛选,条件是年龄大于 25 岁,并且城市为 beijing。筛选后只有一条数据符合要求。

    1#使用“与”条件进行筛选2df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]
    981434e7267f2bfbc4f14a98d40f51fd.png

    使用“或”条件进行筛选,年龄大于 25 岁或城市为 beijing。筛选后有 6 条数据符合要求。

    1#使用“或”条件筛选2df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort3(['age'])
    981434e7267f2bfbc4f14a98d40f51fd.png

    在前面的代码后增加 price 字段以及 sum 函数,按筛选后的结果将 price 字段值进行求和,相当于 excel 中 sumifs 的功能。

    1#对筛选后的数据按 price 字段进行求和2df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'),3['id','city','age','category','gender','price']].sort(['age']).price.sum()4519796

    使用“非”条件进行筛选,城市不等于 beijing。符合条件的数据有 4 条。将筛选结果按 id 列进行排序。

    1#使用“非”条件进行筛选2df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id'])
    7caf6b3d2c3bb0992d78cd249cad1e37.png

    在前面的代码后面增加 city 列,并使用 count 函数进行计数。相当于 excel 中的 countifs 函数的功能。

    1#对筛选后的数据按 city 列进行计数2df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()34

    还有一种筛选的方式是用 query 函数。下面是具体的代码和筛选结果。

    1#使用 query 函数进行筛选2df_inner.query('city == ["beijing
    展开全文
  • mysql如何批量删除数据库中的数据

    千次阅读 2021-02-02 03:42:39
    Oracle 数据库,请稍等…… set expname=%date:~0 2021-01-14 18:06:10 我们在操作表的时候难免会遇到误删除,或者删掉数据还想恢复的情况。也许细心的朋友会用begin tran rollback/commit 这种事务来避免出现失误...
  • SQL查询过滤:除自增主键id以外的列(除主键id外至少有2个列)数据重复的结果,重复的结果行只要id最小的那一行数据,且不可删除原始数据
  • 所有数据和代码可在GitHub获取:https://github.com/xiaoyusmd/PythonDataScience本次来介绍重复值处理的常用方法。重复值处理主要涉及两个部分,...
  • checklist中有多个工作表,对每个工作表筛选出fail项进行查看,费时费力 二、实现思路 在excel中编写VBA脚本,遍历每个表并进行筛选失败项,将fail项汇总到failResult表中 三、具体实现 Attribute VB_Name = "fail项...
  • 案列:数据库中有多条重复的数据需要清洗一下,这些数据除了id(主键)不一样,其他的都一样。 一、首先看一下这些冗余的数据: SELECT min(id) bid ,GROUP_CONCAT(id)...三、删除这些重复的数据:sql语句如下: .
  • 但是这些记录又不能无限的存储,只需要记录最新的50条或者100条就可以了,所以要求应用每插入一条新数据之后,对超过50条的数据进行清理。 本文以搜索历史记录为例,主要介绍sqlite中limit ,offset关键字的使用,...
  • 《算法和数据结构》学习路线指引

    万次阅读 多人点赞 2021-07-01 11:16:15
    3)目录是精髓 然后,我们大致看下你选择的教程的前几个章节,那些标题是否有你认知以外的名词出现,比如以这个思维导图为例。 如果你觉得这些名词中有 3 / 4 以上是没有什么概念的。那么,可能需要补齐一些数学、...
  • 数据中台怎么选型?终于有人讲明白了

    万次阅读 多人点赞 2022-01-07 14:07:21
    数据中台怎么选型?终于有人讲明白了
  • SQL删除重复数据,保留ID最大的一条

    万次阅读 2018-10-24 14:40:21
    在数据库中可能会存在重复数据,需要删除并且保留其中一条 ,这里我们保留其中id最大的一条 DELETE FROM T_Dat_BankData WHERE BankCode IN ( SELECT BankCode FROM T_Dat_BankData GROUP BY BankCode HAVING ...
  • pandas:找出、删除重复的数据(Python)前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 pandas.DataFrame.duplicated 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例...
  • 我们在查询数据的时候,会有许多相同的数据,这时候我们就要给它把重复的数据删除,查看不同的数据 图表 1 Distinct还可以对null值进行去重操作 关键字:Where :用于筛选,后面可以跟我们过滤语句一系列条件 ...
  • 在日常的数据分析工作中经常会遇见异常数据,即超出特定区域或范围的数据通常被定义为异常或“噪声”,也称为离群值。 本文介绍在日常工作中,对于数据离群值的可视化和处理套路。 区分真假异常 根据业务经验来判断...
  • 6月12日给大家讲解了一下数据获取的东东(时隔略久,忘记的请点击数据获取回顾),时隔一个月,接着我们的 用Excel进行数据分析系列 的第二篇:数据处理。文末有获取本篇实例数据的方法。目录...
  • 大二暑假_SSM项目_筛选+动态配置一、筛选功能1)主要内容2)遇到的困难3)部分代码4)效果展示二、1)主要内容2...layui table数据渲染页面+筛选医生+在筛选日期一条龙 并研究了官网的说明: table 数据表格文档 - lay
  • PB基础知识1、Datawindow object(数据窗口库对象) 数据源决定了数据窗口对象获取数据的方式。PowerBuild支持五种数据源:A、 快速选择(Quik Select)能够创建简单的SQL Select语句,主要用于从一个表或由外键连接的多...
  • 实现删除数据库表中重复数据仅保留一条SQL语句
  • 实时数据仓库首先是个数据仓库,只是它优先考虑数据的时效性问题。因此本篇开头将介绍业界公认的数据仓库定义,它和操作型数据库应用的区别,以及为什么我们需要数据仓库。 在对数据仓库的概念有了基本的认识后,有...
  • 数据清洗 错误值处理(Wrong Value Processing) 异常值处理(Outlier Processing) 缺失值处理(Missing Data Processing) 数据清洗 错误值处理(Wrong Value Processing) 错误值是指数据集中出现的数值...
  • 数据中台常用术语整理

    千次阅读 2022-02-28 17:41:28
    数据中台常用术语整理,包括:什么是数据中台、数据中台架构、数据汇聚联通、数据体系建设、数据资产管理、数据服务体系建设等相关术语。
  • 自然语言处理领域的数据增广方法

    千次阅读 2021-03-09 18:04:56
    数据增广(Data Augmentation,也有人将Data Augmentation翻译为“数据增强”,然而“数据增强”有将数据进行强化之意,而不仅是数量扩充。因此我们将其翻译为“数据增广”,单纯表示扩大数据规模。)是自动扩充训练...
  • 代表性工作介绍4.1 面向模糊列名与数据取值的数据集成方法4.2 对数据源进行快速筛选的方法4.3 面向网页表数据的集成方法4.4 基于众包的数据集成方法4.5 大数据集成系统 一. 摘要 数据集成在数据管理与分析领域起着...
  • 01 生成数据表第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。获取外部...
  • 作者 |东哥起飞来源 | Python数据科学本次来介绍重复值处理的常用方法。重复值处理主要涉及两个部分,一个是找出重复值,第二个是删除重复值,也就是根据自己设定的条件进行删除操作。定位...
  • 大家好,我是小z,也可以叫我阿粥在数据处理过程中,最常见的数据处理就是重复值处理。毕竟后续还有数据的排序、合并、统计等操作,如果不先进行重复值的数据,那最终的结果往往是有偏差的。针对重复值...
  • 本文主要讲解Excel筛选功能
  • 数据分析实战

    千次阅读 2021-03-23 15:14:35
    数据分析实战数据分析基础数据分析全景图及修炼指南学习数据挖掘的最佳路径学数据分析要掌握哪些基本概念用户画像:标签化就是数据的抽象能力数据采集:如何自动化采集数据数据采集:如何用八爪鱼采集微博上的“D&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,280
精华内容 5,712
关键字:

删除筛选以外的数据