精华内容
下载资源
问答
  • 数据分析之数据处理(一)

    千次阅读 2021-01-30 21:28:31
    数据分析之数据处理(一) 一、缺失值处理 数据确实是主要包括记录缺失和字段信息缺失等情况,其对数据分析会有较大的影响,导致结果不确定性更加显著 缺失值的处理:删除记录/数据插补/不处理 import warnings ...

    数据分析之数据处理(一)

    一、缺失值处理

    • 数据确实是主要包括记录缺失和字段信息缺失等情况,其对数据分析会有较大的影响,导致结果不确定性更加显著
    • 缺失值的处理:删除记录/数据插补/不处理
    import warnings
    warnings.filterwarnings('ignore')
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from scipy import stats
    # %matplotlib inline
    
    # step 1 创建数据
    s=pd.Series([12,33,45,23,np.nan,np.nan,66,54,np.nan,99])
    df=pd.DataFrame({'value1':[12,33,45,23,np.nan,np.nan,66,54,np.nan,99,190],
                     'value2':['a','b','c','d','e',np.nan,np.nan,'f','g',np.nan,'g']})
    print('\n*******s*******\n',s)
    print('\n*******df*******\n',df)
    

    运行结果
    在这里插入图片描述
    在这里插入图片描述

    #step 2 判断是否有缺失值数据:isnull notnull
    # isnull (缺失值为true,非缺失值为false)
    # notnull(缺失值为false,非缺失值为true)
    print('*******Series********\n',s.isnull())#Series直接判断是否是缺失值,返回一个series
    print('*******Dataframe********\n',df.notnull())#Dataframe直接判断是否是缺失值返回一个series
    print('*******Value1********\n',df['value1'].notnull())#通过索引判断
    

    运行结果

    在这里插入图片描述
    在这里插入图片描述

    # step 3 筛选非缺失值
    s2=s[s.isnull()==False]
    df2=df[df['value2'].notnull()]
    print('\n*******s2*******\n',s2)
    print('\n*******df2*******\n',df2)
    

    运行结果
    在这里插入图片描述
    在这里插入图片描述

    # step 4 删除缺失值-dropna
    s.dropna(inplace=True)
    df2=df['value1'].dropna()
    print('\n*******s删除缺失值*******\n',s)
    print('\n*******df删除缺失值*******\n',df2)
    

    注:drop方法可以直接用于series和dataframe,inplace参数默认为false(生成新的值)

    运行结果
    在这里插入图片描述
    在这里插入图片描述

    # step 5 填充缺失数据——fillna
    # 在缺失值还没有删除之前进行
    # fillna(value=None,method=None,axis=None,inplace=True,linit=None,downcast=None,**kwargs) value 表示填充值
    s.fillna(0,inplace=True)
    print('\n*******s填充缺失数据*******\n',s)
    #pad/ffill表示用之前的数据填充,backfill/bfill表示用之后的数据填充
    df['value1'].fillna(method='pad',inplace=True)
    print('\n*******df填充缺失数据*******\n',df)
    

    运行结果
    在这里插入图片描述在这里插入图片描述

    # step 6 替换缺失数据——replace
    # replace(to_replace=None,value=None,inplace=False,limit=None,regex=False,method='pad',axis=None)to_replace表示被替换的值,value表示替换值
    s = pd.Series([1,1,2,2,3,4,5,np.nan,np.nan,66,54,np.nan,99])s.replace(np.nan,'缺失数据',inplace=True)
    print('\n*******s替换缺失数据*******\n',s)
    s.replace([1,2,3],np.nan,inplace=True)#多值用nan代替
    print('\n*******s多值替换缺失数据*******\n',s)
    

    运行结果
    在这里插入图片描述
    在这里插入图片描述

    # step 7 缺失值插补:均值/中位数/众数插补,临近插补,插值法
    # (1)均值、中位数、众数插补
    s = pd.Series([1,2,3,np.nan,3,4,5,5,np.nan,6,7,2,np.nan,3,4])# 创建数据
    print('*******s*******\n',s)
    # 分别求出均值、中位数、众数
    u=s.mean()#均值
    me=s.median()#中位数
    mod=s.mode()#众数
    print('\n均值为:%.2f, 中位数为:%.2f' % (u,me))
    print('\n众数为:', mod.tolist())
    s.fillna(u,inplace=True)
    print('\n*******均值填充*******\n',s)
    

    运行结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    # (2)临近值插补
    s = pd.Series([1,2,3,np.nan,3,4,5,5,np.nan,np.nan,6,6,7,12,2,np.nan,3,4])#创建数据
    # print('*******s*******\n',s)
    s.fillna(method='ffill',inplace=True)
    print('\n*******临近值插补*******\n',s)#用前置插补
    

    运行结果
    在这里插入图片描述

    from scipy.interpolate import lagrange
    # (3)插值法——拉格朗日插值法
    x=[3,6,9]
    y=[10,8,4]
    print(lagrange(x,y))
    print(type(lagrange(x,y)))
    # type的输出值为的是多项式的n个系数,这里输出3个值,分别为a0,a1,a2
    # y = a0 * x**2 + a1 * x + a2 → y = -0.1111* x**2 + 0.3333* x + 10
    print('\n插值为:%.2f'%lagrange(x,y)(10))
    

    运行结果
    在这里插入图片描述
    自学自用,希望可以和大家积极沟通交流,小伙伴们加油鸭,如有错误还请指正,不喜勿喷

    展开全文
  • 海量数据处理:桶排序

    千次阅读 2021-04-13 20:33:48
    处理大量数据排序时,如果收到内存和时间的限制时,我们将数据进行拆分到小单元,单元内进行排序,这样就可以使用小内存排序大数据。也可以使用多线程排序小单元数据,最后进行数据合并完成整个数据排序。 在...

    分桶排序

      桶排序采用了分而治之的思想。在处理大量数据的排序时,如果收到内存和时间的限制时,我们将数据进行拆分到小单元,单元内进行排序,这样就可以使用小内存排序大数据。也可以使用多线程排序小单元数据,最后进行数据合并完成整个数据的排序。
    在这里插入图片描述
    在桶排序中关键点是数据分桶的处理。如果需要排序的数据不是线性递增的,就可能导致分桶数据不均匀,极端情况出现数据全部分到一个桶中,编程单个算法排序了。桶排序适合均匀分布的相对比较密集的数据

    代码demo实现

    import java.util.ArrayList;
    import java.util.List;
    /**
     * @author zhw
     * @description
     * @date 2021-04-13 19:27
     */
    public class BucketSort {
    	//设置桶内数据大小
        private static final int BUCKET_SIZE = 10;
    
        public Integer[] bucketSort(Integer[] arr){
        	//桶数量
            int bucketNumber = arr.length % BUCKET_SIZE == 0 ? arr.length / BUCKET_SIZE : arr.length / BUCKET_SIZE + 1;
            //桶创建
            Bucket[] buckets = new Bucket[bucketNumber];
            for (int i = 0;i<buckets.length;i++){
                buckets[i] = new Bucket();
            }
            //数据分桶
            for(int i = 0;i<arr.length;i++){
                int index = arr[i] / bucketNumber;
                //将空间一致的数据分到同一个桶中
                Bucket bucket = buckets[index>bucketNumber?bucketNumber-1:index];
                bucket.add(arr[i]);
            }
            //开始排序
            int index = 0;
            for(int i = 0;i<buckets.length;i++){
                Integer[] sort = buckets[i].sort();
                //数据合并
                for(int j = 0;j<sort.length;j++){
                    arr[index++] = sort[j];
                }
            }
            return arr;
        }
        private class Bucket{
        	//桶内计数
            private int num = 0;
            List<Integer> data = new ArrayList<>();
            public Bucket add(Integer d){
                num++;
                data.add(d);
                return this;
            }
            public Integer[] sort(){
                Integer[] integers = data.toArray(new Integer[data.size()]);
                quickSort(integers);
                return integers;
            }
    		//桶内使用快排
            private void quickSort(Integer[] arr){
                qsort(arr, 0, arr.length-1);
            }
            private void qsort(Integer[] arr, int low, int high){
                if (low < high){
                    int pivot=partition(arr, low, high);        //将数组分为两部分
                    qsort(arr, low, pivot-1);                   //递归排序左子数组
                    qsort(arr, pivot+1, high);                  //递归排序右子数组
                }
            }
            private int partition(Integer[] arr, int low, int high){
                int pivot = arr[low];     //枢轴记录
                while (low<high){
                    while (low<high && arr[high]>=pivot) --high;
                    arr[low]=arr[high];             //交换比枢轴小的记录到左端
                    while (low<high && arr[low]<=pivot) ++low;
                    arr[high] = arr[low];           //交换比枢轴小的记录到右端
                }
                //扫描完成,枢轴到位
                arr[low] = pivot;
                //返回的是枢轴的位置
                return low;
            }
    
        }
    }
    

    测试

    public class Test {
        public static void main(String[] args) {
            BucketSort bucketSort = new BucketSort();
            Integer[] a = {2,3,4,5,676,74,23,4,5,6,1,23,4,5,323,542,35,435,234,53,1324,345,3453,1234};
            Integer[] integers = bucketSort.bucketSort(a);
            System.out.println(Arrays.asList(integers).toString());
        }
    }
    

    从10亿数据中找出中位数?

    假设这10亿数据都是无符号整数。我们可以创建2^16个桶。我们取数据中的高16位进行分桶,分桶方式如下:
    在这里插入图片描述
    每个桶都记录桶中数据数量num,然后将各个桶的num相加,得到中位数落到哪个桶内,然后将桶内数据进行排序后得到中位数。

    展开全文
  • 对Excel数据进行排序数据分析不可缺少的组成部分。您可能需要执行以下操作:将名称列表按字母顺序排列;按从高到低的顺序编制产品存货水平列表,按颜色或图标对行进行排序。对数据进行排序有助于快速直观地显示数据...

    对Excel数据进行排序是数据分析不可缺少的组成部分。您可能需要执行以下操作:将名称列表按字母顺序排列;按从高到低的顺序编制产品存货水平列表,按颜色或图标对行进行排序。对数据进行排序有助于快速直观地显示数据并更好地理解数据,有助于组织并查找所需数据,有助于最终做出更有效的决策。

    注释 若要查找某个单元格区域或某个表中的上限或下限值(如前 10 名或后 5 个销售额),可以使用自动筛选或条件格式。

    了解排序

    可以对一列或多列中的数据按文本(升序或降序)、数字(升序或降序)以及日期和时间(升序或降序)进行排序。还可以按自定义序列(如大、中和小)或格式(包括单元格颜色、字体颜色或图标集)进行排序。大多数排序操作都是针对列进行的,但是,也可以针对行进行。

    排序条件随工作簿一起保存,这样,每当打开工作簿时,都会对 Excel 表(而不是单元格区域)重新应用排序。如果希望保存排序条件,以便在打开工作簿时可以定期重新应用排序,最好使用表。这对于多列排序或花费很长时间创建的排序尤其重要。

    对文本进行排序

    1、选择单元格区域中的一列字母数字数据,或者确保活动单元格在包含字母数字数据的表列中。

    2、在“开始”选项卡上的“编辑”组中,单击“排序和筛选”。

    3、请执行下列操作之一:

    ·若要按字母数字的升序排序,请单击“从 A 到 Z 排序”。

    ·若要按字母数字的降序排序,请单击“从 Z 到 A 排序”。

    4、可以执行区分大小写的排序(可选)。

    1033122366.jpg如何执行区分大小写的排序

    1、在“开始”选项卡上的“编辑”组中,单击“排序和筛选”,然后单击“自定义排序”。

    2、在“排序”对话框中,单击“选项”。

    3、在“排序选项”对话框中,选择“区分大小写”。

    4、单击“确定”两次。

    问题:检查所有数据是否存储为文本 如果要排序的列中包含的数字既有作为数字存储的,又有作为文本存储的,则需要将所有数字均设置为文本格式;否则,作为数字存储的数字将排在作为文本存储的数字前面。要将选定的所有数据设置为文本格式,请在“开始”选项卡上的“字体”组中,单击“设置单元格字体格式”按钮,单击“数字”选项卡,然后在“分类”下,单击“文本”。

    问题:删除所有前导空格 在有些情况下,从其他应用程序导入的数据前面可能会有前导空格。请在排序前先删除这些前导空格。

    展开全文
  • mysql排序数据

    2021-01-25 17:26:58
    介绍当使用SELECT语句查询表中的数据时,结果集不按任何顺序进行排序。要对结果集进行排序,请使用ORDER BY子句。ORDER BY子句允许:对单个列或多个列排序结果集。按升序或降序对不同列的结果集进行排序。使用方式:...

    一:order by的普通使用

    1.介绍

    当使用SELECT语句查询表中的数据时,结果集不按任何顺序进行排序。要对结果集进行排序,请使用ORDER BY子句。

    ORDER BY子句允许:

    对单个列或多个列排序结果集。

    按升序或降序对不同列的结果集进行排序。

    使用方式:

    SELECT column1, column2,...

    FROMtbl

    ORDERBY column1 [ASC|DESC], column2 [ASC|DESC],...

    2.按照列进行排序

    SELECT

    contactLastname,

    contactFirstname

    FROM

    customers

    ORDER BY

    contactLastname DESC,

    contactFirstname ASC;

    9eaa8e8c7616f56015c162ccb8b1b5ed.png

    在上面的查询中,ORDER BY子句首先按照contactLastname列降序对结果集进行排序,然后按照contactFirstname列升序对排序结果集进行排序,以生成最终结果集。

    3.按照表达式进行排序

    ORDER BY子句还允许您根据表达式对结果集进行排序

    SELECT

    ordernumber,

    orderlinenumber,

    quantityOrdered * priceEach

    FROM

    orderdetails

    ORDER BY

    ordernumber,

    orderLineNumber,

    quantityOrdered * priceEach;

    bbc8688a3246c2f5a0d747cc8816fb69.png

    4.order by 与自定义排序

    ORDER BY子句允许使用FIELD()函数为列中的值定义自己的自定义排序顺序。

    如果要按以下顺序基于以下状态的值对订单进行排序:

    In Process

    On Hold

    Cancelled

    Resolved

    Disputed

    Shipped

    可以使用FIELD()函数将这些值映射到数值列表,并使用数字进行排序; 请参阅以下查询:

    SELECT

    orderNumber, status

    FROM

    orders

    ORDER BY FIELD(status,

    'In Process',

    'On Hold',

    'Cancelled',

    'Resolved',

    'Disputed',

    'Shipped');

    3d8f62598cc419603bd35810a0edd109.png

    注意的是FIELD函数中又一个status字段。

    二:order by用自然语言排序

    1.新建表

    CREATE TABLE IF NOT EXISTS items (

    id INT AUTO_INCREMENT PRIMARY KEY,

    item_no VARCHAR(255) NOT NULL

    );

    cd72e99dfb3aea438256b9dd6eabf4eb.png

    2.插入数据

    INSERT INTO items(item_no)

    VALUES ('1'),

    ('1C'),

    ('10Z'),

    ('2A'),

    ('2'),

    ('3C'),

    ('20D');

    63bb0a5407ed3e829c62454050860b49.png

    3.查询结果

    当我们查询选择数据并按item_no排序时,得到以下结果:

    SELECT

    item_no

    FROM

    items

    ORDER BY item_no;

    4f986497f2c2a8231e6d3f7d3dd1edf1.png

    因为这是自然排序。

    4.解决方式

    为了克服这个问题,首先我们将item_no列分成两列:prefix 和 suffix。 prefix列存储item_no的数字部分,suffix列存储字母部分。然后根据这些列对数据进行排序。

    SELECT

    item_no

    FROM

    items

    ORDER BY CAST(item_no AS UNSIGNED) , item_no;

    1d2cdfcd41730bb0f280cd66790a6c2a.png

    在这个查询中,首先使用类型转换将item_no数据转换为无符号整数。 其次,使用ORDER BY子句对数字进行数字排序,然后按字母顺序排列。

    5.下一个例子

    如果删除表:drop table items

    现在清空表:drop table items

    添加数据:

    INSERT INTO items(item_no)

    VALUES('A-1'),

    ('A-2'),

    ('A-3'),

    ('A-4'),

    ('A-5'),

    ('A-10'),

    ('A-11'),

    ('A-20'),

    ('A-30');

    自然排序:

    cbd6fe88c23f418dbeeb596d8a57dce8.png

    6.解决方式

    SELECT

    item_no

    FROM

    items

    ORDER BY LENGTH(item_no) , item_no;

    6e2d30b34d0d139ead4abddadfaaed35.png

    为了得到上面这个结果,可以使用LENGTH函数。 请注意,LENGTH函数返回字符串的长度。 这个做法是首先对item_no数据进行排序,然后按列值排序

    展开全文
  • 用python对表格数据进行排序
  • 常见的数据排序方法

    千次阅读 2021-03-06 16:32:03
    排序,顾名思义,就是将一组无序的数据按照指定的顺序(一般是从大到小或从小到大)进行排列的过程。不管是在Java还是在JavaScript、PHP、C/C++等编程语言中,对数组(或集合)进行排序都是程序开发人员的必备技能。排序...
  • SPSS 数据排序

    千次阅读 2021-02-21 22:51:37
    一、数据排序 数据排序的意义:数据排序在数据分析过程中非常重要,其便于了解数据的取值状况,SPSS可以对数据基于一个或多个个案(变量)进行排序。数据排序包括个案排序和变量排序,下面我将介绍这两种排序的操作...
  • js实现数据日期排序

    2020-12-19 14:45:24
    今天写消息栏的页面,发现有消息排序,最新的消息排在最前面。特此记录一下按照日期排序数据。 下面贴代码 这是排序后的结果
  • python中对数据进行各种排序的方法

    千次阅读 2021-02-10 09:13:46
    在本文中,我们将探讨使用Python排序数据的各种技术。请注意,sort()原始数据被破坏,sorted()没有对原始数据进行操作,而是新建了一个新数据。一、基本的排序最基本的排序很简单。只要使用sorted()函数即可返回一个...
  • 将某一列的数据格式进行转换,或者将0/1状态改为是/否,或者将数字改为星星评分显示的时候都会遇到一个问题,我的表格数据转换成其他形式,同时设置了sort:true,此时,点击排序按钮之后,该列数据就消失了。...
  • python pandas 数据排序

    千次阅读 2020-12-27 16:59:24
    import numpy as np import pandas as pd df = pd.DataFrame(data = np.random.randint(0,30,size = (30,3)), index = list('...df.sort_index(axis = 0,ascending=True) # 按索引排序,降序
  • 用 Python 排序数据的多种方法目录【Python HOWTOs系列】排序Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭代对象(iterable)排序为一个新的有序列表。本文我们将去探索...
  • 在 这将正确解析数据,将日期作为字符串转换为正确的^{}对象,然后使用^{}对这些对象进行排序: 示例:from __future__ import print_function from datetime import datetime from operator import itemgetter def ...
  • 然后对两部分进行递归处理,以达到整个序列有序的状态。 2:快速排序的步骤 (1):选择基准 在一个待排序列中找一个 待排的数作为基准; (2):分割操作 根据基准将序列分为两部分 (3):将分割后的序列...
  • 1.数据排序 DataFrame.sort_values(by,axis=0,ascending=True,inplace=False,kind="quicksort",na_position="last",ignore_index=False) """ by:要排序的名称列表 axis:轴,0表示行,1表示列 ascending:升序或者...
  • 常用SPSS数据处理方法,你都会吗?

    千次阅读 2020-12-28 21:30:16
    数据处理是在统计和分析数据时,第一步要做的。尤其是当面对大量数据时,数据处理是一个重要的过程,可以达到提高处理效率及精度的目的。为配合进行更好的分析,研究过程过可能涉及到以下数据处理工作:定义变量名、...
  • 导读:对后台返回的数据进行评分排序,时间排序,可以倒序,可以正序。 按照评分排序 正序 qualityScoreSort(){ this.tableData0.sort((a, b) => { return b.qualityScore - a.qualityScore //从大到小 ...
  • 数据处理之异常值处理

    千次阅读 2021-03-17 19:52:39
    异常值是指那些在数据集中存在的不...如果忽视这些异常值,在某些建模场景下就会导致结论的错误(如线性回归模型、K均值聚类等),所以在数据的探索过程中,有必要识别出这些异常值并处理好它们。 异常值检测 简单统
  • 数据结构】图解七大排序

    万次阅读 多人点赞 2021-11-19 21:59:16
    七大排序的可视化
  • 1、排序的概念 1、排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的...外部排序数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据
  • spark流数据处理

    千次阅读 2021-06-18 14:47:45
    spark 流媒体处理批数据处理与流数据处理批数据流处理Spark Streaming结构化流数据处理数据处理与流数据处理 如果我们数据看作是一个巨大的海洋,我们可以批数据当做一桶水,只不过桶有着不同的大小,对应的...
  • 单片机实验1数据排序.doc

    千次阅读 2021-02-11 21:01:09
    单片机实验1数据排序电子信息学院实验报告书课 程 名: 《单片机原理及应用实验》题 目: 实验一 数据排序实验软件实验实验类别: 【设计】班 级:学 号:姓 名:1、实验内容或题目题目:实验内容:用冒泡法将内存...
  • Tableau-数据处理(三)

    千次阅读 2020-12-25 17:49:42
    3.1 数据预处理 1)数据解释器: 去除空行、标题等,智能识别数据表格;可以检测并绕过标题、注释、页脚、空单元格等内容,从而确定数据集中的实际字段和值 2)数据格式设置(数据类型) -- 和上一篇的...
  • 气象数据处理:NetCDF文件处理

    千次阅读 2020-12-29 10:00:24
    所谓自描述就是自带属性信息,这和一般的雷达基数据格式不同,一般的雷达数据也是二进制的,但不是自描述的,而是需要额外的数据格式文档来说明数据格式,而NetCDF文件中包含了描述变量和维度的元数据信息。...
  • 数据结构】直接插入排序

    千次阅读 多人点赞 2021-11-17 13:36:28
    直接插入排序是一种简单的插入排序方法,排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 可以类比我们玩扑克牌的时候。 动图演示 先...
  • JAVA如何数据库的数据处理成树形结构?
  • 文章详细总结了插入排序、希尔排序、选择排序、归并排序、交换排序(冒泡排序、快速排序)、基数排序、外部排序。从`思想`到`代码实现`。 大三党,大数据专业,正在为面试准备,欢迎学习交流`。
  • pandas数据处理——取出重复数据

    千次阅读 2021-03-11 17:09:19
    平常我们用pandas做重复数据处理时,常常调用到drop_duplicates方法,来去除重复保留唯一值。 现在我不想去除重复,而是整个重复数据输出,数据如下所示: https://www.cnblogs.com/trotl/p/11876292.html ...
  • Pandas 基础练习(二) —— 数据条件选择与...1,读入数据先利用 read_csv() 函数 把数据都进来,这个数据是一个商品类目的数据,里面有 quantity(类)、name(名字)、description(描述)、price(价格)等几个属性:imp...
  • 气象数据处理——nc文件

    千次阅读 2020-12-23 19:47:27
    数据说明NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准。目前,NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,277,385
精华内容 2,910,954
关键字:

怎么把数据排序