数据分析指北 - 基础(基础数据操作之一)

640?wx_fmt=png

数据分析指北 - 基础(基础数据操作之一)

计算机是怎么处理表数据的,以及一些小学数学题?


历史回看:
数据分析指北 - 前言(01)
简单介绍了数据所有者的情况以及数据工程师都在做什么的事情。
数据分析指北 - 前言(03)
方法论 之 问题的解,科学方法,以及 然后呢?
数据分析指北 - 基础(数据来源及轮廓)
有必要搞清楚数据的原始出处以及大致轮廓(分布)。



Photo by Mateusz Delegacz on Unsplash

微信公众号:数据分析指北

  • 基础数据操作

  • 示例数据

  • 具体的小问题

    • 计算机能够明白的方式?

    • 小学数学题列表

基础数据操作

我们已经对数据的来源以及轮廓(分布)有了一个基础的了解。下一步就要将这些数据清洗,整理干净。也就是数据分析指北 - 前言(01)中提到的ETL或是data pipeline的过程。

这里先展示一个非常简单的示例数据(简单到你可以口算得到结果)。希望能够通过这个简单的示例和一些小学数学题,激发你对数据操作的一些思考。

示例数据

以下是制作的示例数据:

640?wx_fmt=png

示例数据

这个数据是我编的,名字里面带“一”的,都是1班的,名字里面带“二”的,都是2班的,另外1班和2班“同”时都有一个特别的“孙同”同学,不过他们重名,不是同一个人。

由于记录前没有统一约定,两个班的日期格式不同,钱一同学的出生年月还被班长错写成了00月,李二同学的身高也被漏记了。

具体的小问题

数据如上所述,很简单。而一会要提出的有些问题,可能你一个个去数,就会得到答案,但这不符合我的要求。

我的要求是 – 要以计算机能够明白的方式来清晰表述解决问题的具体步骤,这样,当数据扩展到几千,几万,几十万,几百万的时候,使用同样的方式就可以了。(当数据巨大时可能会有一些其他问题,我们暂时忽略。)

计算机能够明白的方式?

计算机能够明白的方式?那是什么方式呢?计算机其实很傻,对表格只有几种基础操作,比如,它可以一行行的处理数据,处理第一行,处理第一行的第一列,处理第一行的第二列,… , 等到第一行处理完之后,开始接着处理第二行…直到处理完最后一行的最后一列。 这种一行行处理的,叫做row-based。

同样也应该可以想到,还有对应另外一种处理方式 – 就是它可以一列列处理数据,先处理第一列,处理第一列的第一行,第一列的第二行,… ,等到第一列处理完成之后,就开始处理第二列,这种一列列处理的,叫做column-based。

这两种方式,在处理不同类型的问题时有着不一样的优势。比如,我想统计每班有多少人,在上面两种处理数据的方式中,显然column-based的方式能更快的得到结果。通过设置两个变量来记录次数,第一列第一行是1,那么第一个变量由0加1得1;第一列第二行是1,那么第一个变量由1再加1得2,依次类推,它只需要在第一列数据处理完之后,就可以得到结果,而这个问题,如果用row-based的处理方式,只有处理到最后一行的第一列,才能得到结果。

前面说的利用两个变量统计次数的计算过程比较简单,不管用row-based还是用column-based,要得到结果都还算轻松,但有的计算过程对于row-based和column-based就不是同样容易编写了,有可能某个计算过程在column-based的情况下,只需要寥寥几行就能得出计算结果,而row-based的情况则要写的复杂得多,而且容易出错。

在这种情况下,我们如果仍然想利用基于column的计算过程来计算某一行的数据,那么我们能做的就是采用一种曲线救国的方法,先把整个表翻转(转置)一下,将中间结果计算完成之后,再转置回去得到最终答案。当然,你也可以去研究一种怎么针对row的计算过程,然而,在已经有了基于column的计算过程的情况下,再去研究row怎么去算,这件事大概率是不值得做的。

640?wx_fmt=png

曲线救国

小学数学题列表

好了,你已经知道计算机是怎么处理表的了,要么先行后列,要么先列后行,然后再自己做一些运算,或记录,得到最终结果。
现在想想下面的小学数学题,对应上面所讲的步骤,具体的解决过程究竟是怎样的。

  1. 想得到只有班级和姓名组成的新表;

  2. 想得到只有2班同学的新表;

  3. 想得到姓“李”的同学的新表;

  4. 想得到2班同学且只有班级和姓名组成的新表;

  5. 想把上一个问题中得到的表的表头–“班”改成“班级”;

  6. 想把上一个问题中得到的表做的更人性化一点,即把“班级”一列中的,“1”改为“一班”,“2”改为“二班”;

  7. “李二”缺失的身高怎么办呢?

  8. 根据英语成绩,由高到低,把两个班的同学排序;

  9. 得到各个班英语和数学的平均成绩;

  10. 把上一个问题中得到的平均成绩增加到原表的最后一行中;

  11. 得到各个班级中,英语最高的同学名单;

  12. 得到所有女生当中,英语成绩最高的同学的姓名与班级;

  13. 根据数学成绩把同学区分为优(大于90),良(小于等于90),并计算有多少优,有多少良;

  14. 怎么把有问题的出生年月改过来?

  15. 出生年月改过来之后,怎么计算年龄?

小学数学题,对吧?不过你得想一下怎么把小学数学的计算过程一步步给计算机描述清楚。
光说,“显然可见”,或者指着表格中的单元,说:“就是这个加这个”,这都是不合格的答案哦。

回头聊

反馈,转发或赞赏?

640?wx_fmt=png


Stkcd [股票代码] ShortName [股票简称] Accper [统计截止日期] Typrep [报表类型编码] Indcd [行业代码] Indnme [行业名称] Source [公告来源] F060101B [净利润现金净含量] F060101C [净利润现金净含量TTM] F060201B [营业收入现金含量] F060201C [营业收入现金含量TTM] F060301B [营业收入现金净含量] F060301C [营业收入现金净含量TTM] F060401B [营业利润现金净含量] F060401C [营业利润现金净含量TTM] F060901B [筹资活动债权人现金净流量] F060901C [筹资活动债权人现金净流量TTM] F061001B [筹资活动股东现金净流量] F061001C [筹资活动股东现金净流量TTM] F061201B [折旧摊销] F061201C [折旧摊销TTM] F061301B [公司现金流1] F061302B [公司现金流2] F061301C [公司现金流TTM1] F061302C [公司现金流TTM2] F061401B [股权现金流1] F061402B [股权现金流2] F061401C [股权现金流TTM1] F061402C [股权现金流TTM2] F061501B [公司自由现金流(原有)] F061601B [股权自由现金流(原有)] F061701B [全部现金回收率] F061801B [营运指数] F061901B [资本支出与折旧摊销比] F062001B [现金适合比率] F062101B [现金再投资比率] F062201B [现金满足投资比率] F062301B [股权自由现金流] F062401B [企业自由现金流] Indcd1 [行业代码1] Indnme1 [行业名称1] 季度数据,所有沪深北上市公司的 分别包含excel、dta数据文件格式及其说明,便于不同软件工具对数据的分析应用 数据来源:基于上市公司年报及公告数据整理,或相关证券交易所、各部委、省、市数据 数据范围:基于沪深北证上市公司 A股(主板、中小企业板、创业板、科创板等)数据整理计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值