精华内容
下载资源
问答
  • 在平常的工作中,由于数据量比较大,数据表的行数通常都很多,而我们需要的数据经常存放在不同工作表中。当我们要在两个具有海量数据的工作表中查看某些关联数据时,来回切换和上下滚动查找非常不方便,此时就特别...

    在平常的工作中,由于数据量比较大,数据表的行数通常都很多,而我们需要的数据经常存放在不同的工作表中。

    当我们要在两个具有海量数据的工作表中查看某些关联数据时,来回切换和上下滚动查找非常不方便,此时就特别需要这样一个功能:并排显示两个工作表,并且这两个工作表可以同步滚动,即在任意一个工作表中上下翻页时,另外一个工作表也会同时上下翻页。

    今天就教大家怎么使用这个功能。

    案例:

    同步滚动显示两个工作表,效果如下图所示。

    93200dc0411df2922c6b062af6a7f4dd.gif

    解决方案:

    1. 先看一下,文件“工作簿1”中有两个工作表,分别如下图所示。

    18e77b28eb57b799bf8be77028c008be.png
    f4b28fc5070c72b653803fbfad574433.png

    2. 选择菜单栏的“视图”-->“新建窗口”

    546a62f0040be6d8c9c992234832c2e3.png

    此时会复制出一个内容完全相同的新工作簿“工作簿1:2”。

    a2c29aac29863f6fbeaa7754773291e4.png

    3. 在两个工作簿中分别打开不同的工作表 --> 选择菜单栏的“视图”-->“并排查看”

    ed745b4f9a407291ae9cf8939e2af426.png

    两个工作簿会以默认的上下方式显示。

    b33ad9ebac3259b9ebaaaa07651c6d49.png

    4. 在任一窗口的菜单栏选择“视图”-->“同步滚动”

    92fefe34344ea172c3d1cb7deeb6a5d4.png

    5. 选择菜单栏的“视图” -->“全部重排”

    7547d0b0b1f30177c2841d95db74e902.png

    6. 在弹出的对话框中选择“垂直并排”--> 点击“确定”

    319c09fca943240cc3b9c555fc1f3e3b.png

    两个工作簿就变成了左右排列,拖动任意一个工作簿的滚动条,另外一个窗口也会同步上下滚动。

    46167f0e5e77d7dd6026cc476ec07a35.png
    93200dc0411df2922c6b062af6a7f4dd.gif

    很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

    现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。

    展开全文
  • 11.Pandas数据透视

    2020-08-08 13:24:20
    文章目录Pandas数据透视表准备工作什么是数据透视表手工制作一张数据透视表数据透视表语法多维数据透视表数据透视表的其他选项value参数aggfunc参数margin参数margins_name参数泰坦尼克号生还率分析整体情况男女船舱...

    Pandas数据透视表

    前面我们讲解了Pandas的GroupBy对象,并且结合行星的例子讲解了Groupby是如何探索数据集内部的关联性了

    数据透视表(pivot table)是和groupby操作类似的一种操作方法,常见于Excel与类似的表格应用中

    数据透视表将每一列数据作为输入,输出为将数据不断细分成多个维度累计信息的二维数据表

    数据表像一种多维的GroupBy累计操作,因为对数据透视表的分割与组合发生在二维网格上

    和上一节类似,这次依旧首先讲解数据透视表的相关知识,最后基于讲解的数据透视表的知识分析实际案例


    准备工作

    本节在最后使用的数据集包括:

    1. 泰坦尼克号乘客的信息数据库
    2. 美国疾病预防中心(CDC)提供的公开的美国人生日数据

    这里为了避免网络相关问题,我已经把数据集搬运到了百度网盘上

    1. 泰坦尼克号数据集:百度网盘 提取码:666
    2. 美国人生日数据:百度网盘 提取码:666

    此外,由于书中提供的原版美国人生日数据的下载网站无法下载,这里是我找到的另外一个版本

    什么是数据透视表

    数据透视表就是按照我们的需要,将原数据表按照我们所希望的列重新分割组合所得到的新的数据表

    例如在前面的行星的分析中,我们使用groupby方法指定通过method和decade两个维度对数据进行切割,最终得到一个不同年代各种方法发现行星数量的一张表,不妨将其记为A

    则A表就是一张数据透视表,我们透过原有数据得到的数据表

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    planets=pd.read_csv('planets.csv')
    decade=10*(planets['year']//10)
    decade=decade.astype(str)+'s'
    decade.name='decade'
    print(planets)
    print(planets.groupby(by=['method',decade])['number'].sum().unstack().fillna(0))
    print(type(planets.groupby(by=['method',decade])['number'].sum().unstack().fillna(0)))
    >>>
    decade                         1980s  1990s  2000s  2010s
    method                                                   
    Astrometry                       0.0    0.0    0.0    2.0
    Eclipse Timing Variations        0.0    0.0    5.0   10.0
    Imaging                          0.0    0.0   29.0   21.0
    Microlensing                     0.0    0.0   12.0   15.0
    Orbital Brightness Modulation    0.0    0.0    0.0    5.0
    Pulsar Timing                    0.0    9.0    1.0    1.0
    Pulsation Timing Variations      0.0    0.0    1.0    0.0
    Radial Velocity                  1.0   52.0  475.0  424.0
    Transit                          0.0    0.0   64.0  712.0
    Transit Timing Variations        0.0    0.0    0.0    9.0
    <class 'pandas.core.frame.DataFrame'>
    

    手工制作一张数据透视表

    明白什么是数据透视表之后,我们不妨通过手工的方法来制作一张数据透视表,即指定groupby操作的对象是两列

    我们首先制作一张数据表,然后重新为其中的两列赋予存在内在关系的数据

    接下来使用groupby方法,指定两列来作为分割对象

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    print(DataFrame_1)
    GroupBy_1=DataFrame_1.groupby(by=['sexual','nationality'])
    print(GroupBy_1.aggregate('mean').unstack())
    >>>
      sexual nationality  c  d  e  f  g
    A    man          cn  9  6  1  2  5
    B  woman          us  7  7  1  1  4
    C    man          uk  8  6  2  0  5
    A  woman          cn  8  1  0  1  3
    B  woman          us  6  3  8  6  1
    C    man          us  6  1  8  6  4
    
                   c              d              e              f              g          
    nationality   cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us
    sexual                                                                                
    man          9.0  8.0  6.0  6.0  6.0  1.0  1.0  2.0  8.0  2.0  0.0  6.0  5.0  5.0  4.0
    woman        8.0  NaN  6.5  1.0  NaN  5.0  0.0  NaN  4.5  1.0  NaN  3.5  3.0  NaN  2.5
    

    数据透视表语法

    实际上,由于像上面一样的groupby操作来获得一个数据透视表的操作非常常见

    所以Pandas提供了一个pivot_table方法来快速制作一张数据透视表

    语法如下

    DataFrame对象名.pivot_table(value,index,columns,aggfunc,dropna,fill_value)
    

    其中index和columns必须指定,其他的可以省略

    所以上面手工制作的数据表可以用如下语句实现

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    print(DataFrame_1)
    print(DataFrame_1.pivot_table(index='sexual',columns='nationality'))
    >>>
      sexual nationality  c  d  e  f  g
    A    man          cn  1  0  0  9  0
    B  woman          us  3  2  3  4  4
    C    man          uk  9  9  6  1  2
    A  woman          cn  9  3  8  0  8
    B  woman          us  9  1  6  6  8
    C    man          us  9  8  3  0  5
                   c              d              e              f              g          
    nationality   cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us
    sexual                                                                                
    man          1.0  9.0  9.0  0.0  9.0  8.0  0.0  6.0  3.0  9.0  1.0  0.0  0.0  2.0  5.0
    woman        9.0  NaN  6.0  3.0  NaN  1.5  8.0  NaN  4.5  0.0  NaN  5.0  8.0  NaN  6.0
    

    多维数据透视表

    前面讲过,对于高维数据,我们可以使用MultiIndex对象来用DataFrame对象表示高维数据

    所以我们也能够创建多维数据透视表来表示高维数据

    我们实际上只要给columns和index两个参数传递作为键的列表,类似于创建MultiIndex对象时候的from_tuple方法,就能创建出数据透视表,例如

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    DataFrame_1.iloc[:,2]=['child','child','child','adult','child','child']
    DataFrame_1.rename(columns={'c':'age'},inplace=True)
    print(DataFrame_1)
    print(DataFrame_1.pivot_table(index=['sexual','age'],columns='nationality'))
    >>>
      sexual nationality    age  d  e  f  g
    A    man          cn  child  4  4  3  8
    B  woman          us  child  5  5  4  9
    C    man          uk  child  5  0  1  3
    A  woman          cn  adult  2  9  8  9
    B  woman          us  child  3  3  2  9
    C    man          us  child  2  5  8  4
    
                    d              e              f              g          
    nationality    cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us
    sexual age                                                              
    man    child  4.0  5.0  2.0  4.0  0.0  5.0  3.0  1.0  8.0  8.0  3.0  4.0
    woman  adult  2.0  NaN  NaN  9.0  NaN  NaN  8.0  NaN  NaN  9.0  NaN  NaN
           child  NaN  NaN  4.0  NaN  NaN  4.0  NaN  NaN  3.0  NaN  NaN  9.0
    

    数据透视表的其他选项

    DataFrame对象的pivot_table方法的完整签名如下

    DataFrame.pivot_table(values = None,index = None,columns = None,aggfunc ='mean',fill_value = None,margin = False,dropna = True,margins_name ='All'

    其中第一个参数是指定需要聚合的对象,第二三个参数是指定数据透视表的行列索引,第四个参数是指定聚合的方式,默认是平均数

    第五个参数是指定填充缺失值,margin参数用于计算每一组的总数,dropna用于删除缺失值,margin_name用于设动margin列的名字

    下面给一些例子来帮助理解

    value参数

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    DataFrame_1.iloc[:,2]=['child','child','child','adult','child','child']
    DataFrame_1.rename(columns={'c':'age'},inplace=True)
    print(DataFrame_1)
    print(DataFrame_1.pivot_table(index='sexual',columns='nationality'))
    print(DataFrame_1.pivot_table(values='d',index='sexual',columns='nationality'))
    >>>
      sexual nationality    age  d  e  f  g
    A    man          cn  child  3  0  3  3
    B  woman          us  child  2  8  4  0
    C    man          uk  child  1  9  7  1
    A  woman          cn  adult  4  7  0  7
    B  woman          us  child  2  8  0  2
    C    man          us  child  6  3  0  2
                   d              e              f              g          
    nationality   cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us
    sexual                                                                 
    man          3.0  1.0  6.0  0.0  9.0  3.0  3.0  7.0  0.0  3.0  1.0  2.0
    woman        4.0  NaN  2.0  7.0  NaN  8.0  0.0  NaN  2.0  7.0  NaN  1.0
    nationality   cn   uk   us
    sexual                    
    man          3.0  1.0  6.0
    woman        4.0  NaN  2.0
    

    aggfunc参数

    我们可以直接为aggfuc指定聚合的方法,这样将会运用到透视数据表的全部列上

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    print(DataFrame_1)
    print(DataFrame_1.pivot_table(index='sexual',columns='nationality',aggfunc='max'))
    >>>
      sexual nationality  c  d  e  f  g
    A    man          cn  1  2  3  4  0
    B  woman          us  0  2  7  5  7
    C    man          uk  2  4  3  4  5
    A  woman          cn  6  9  5  1  2
    B  woman          us  0  0  6  1  4
    C    man          us  1  5  0  9  8
                   c              d              e              f              g          
    nationality   cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us   cn   uk   us
    sexual                                                                                
    man          1.0  2.0  1.0  2.0  4.0  5.0  3.0  3.0  0.0  4.0  4.0  9.0  0.0  5.0  8.0
    woman        6.0  NaN  0.0  9.0  NaN  2.0  5.0  NaN  7.0  1.0  NaN  5.0  2.0  NaN  7.0
    

    我们也可以为aggfunc参数传入指定每一列聚合方法的字典

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    print(DataFrame_1)
    print(DataFrame_1.pivot_table(index='sexual',columns='nationality',aggfunc={'c':'max','d':'min','e':'mean'}))
    >>>
    sexual nationality  c  d  e  f  g
    A    man          cn  0  7  0  8  4
    B  woman          us  3  0  3  5  0
    C    man          uk  8  7  6  4  1
    A  woman          cn  1  4  8  6  2
    B  woman          us  5  6  5  3  5
    C    man          us  1  4  9  2  8
                   c              d              e          
    nationality   cn   uk   us   cn   uk   us   cn   uk   us
    sexual                                                  
    man          0.0  8.0  1.0  7.0  7.0  4.0  0.0  6.0  9.0
    woman        1.0  NaN  5.0  4.0  NaN  0.0  8.0  NaN  4.0
    

    margin参数

    margin参数可以计算每一组的每列,每行的聚合值

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    print(DataFrame_1)
    print(DataFrame_1.pivot_table('d',index='sexual',columns='nationality',margins=True))
    >>>
      sexual nationality  c  d  e  f  g
    A    man          cn  8  8  7  1  9
    B  woman          us  0  9  5  4  2
    C    man          uk  2  0  9  0  0
    A  woman          cn  2  7  7  7  6
    B  woman          us  4  0  0  7  1
    C    man          us  0  6  8  1  0
    nationality   cn   uk   us       All
    sexual                              
    man          8.0  0.0  6.0  4.666667
    woman        7.0  NaN  4.5  5.333333
    All          7.5  0.0  5.0  5.000000
    

    margins_name参数

    margins_name参数用与为统计行 / 列设置行列索引

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,7)),index=list('ABCABC'),columns=list('abcdefg'))
    DataFrame_1.iloc[:,0]=['man','woman','man','woman','woman','man']
    DataFrame_1.rename(columns={'a':'sexual'},inplace=True)
    DataFrame_1.iloc[:,1]=['cn','us','uk','cn','us','us']
    DataFrame_1.rename(columns={'b':'nationality'},inplace=True)
    print(DataFrame_1)
    print(DataFrame_1.pivot_table('d',index='sexual',columns='nationality',margins=True,margins_name='total'))
    >>>
      sexual nationality  c  d  e  f  g
    A    man          cn  3  9  6  9  0
    B  woman          us  9  0  6  1  0
    C    man          uk  4  9  0  9  8
    A  woman          cn  8  0  4  7  7
    B  woman          us  7  3  4  5  4
    C    man          us  1  5  4  0  5
    
    nationality   cn   uk        us     total
    sexual                                   
    man          9.0  9.0  5.000000  7.666667
    woman        0.0  NaN  1.500000  1.000000
    total        4.5  9.0  2.666667  4.333333
    

    泰坦尼克号生还率分析

    根据前面讲解的数据透视表,下面将对泰坦尼克号这个数据集进行分析

    整体情况

    同样上来先对数据集整体进行分析

    这里对数据表进行转置,以便于不会折行显示

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    
    titanic=pd.read_csv('titanic.csv')
    print(titanic.head().T)
    print(titanic.describe())
    >>>
                           0          1            2            3            4
    survived               0          1            1            1            0
    pclass                 3          1            3            1            3
    sex                 male     female       female       female         male
    age                   22         38           26           35           35
    sibsp                  1          1            0            1            0
    parch                  0          0            0            0            0
    fare                7.25    71.2833        7.925         53.1         8.05
    embarked               S          C            S            S            S
    class              Third      First        Third        First        Third
    who                  man      woman        woman        woman          man
    adult_male          True      False        False        False         True
    deck                 NaN          C          NaN            C          NaN
    embark_town  Southampton  Cherbourg  Southampton  Southampton  Southampton
    alive                 no        yes          yes          yes           no
    alone              False      False         True        False         True
             survived      pclass         age       sibsp       parch        fare
    count  891.000000  891.000000  714.000000  891.000000  891.000000  891.000000
    mean     0.383838    2.308642   29.699118    0.523008    0.381594   32.204208
    std      0.486592    0.836071   14.526497    1.102743    0.806057   49.693429
    min      0.000000    1.000000    0.420000    0.000000    0.000000    0.000000
    25%      0.000000    2.000000   20.125000    0.000000    0.000000    7.910400
    50%      0.000000    3.000000   28.000000    0.000000    0.000000   14.454200
    75%      1.000000    3.000000   38.000000    1.000000    0.000000   31.000000
    max      1.000000    3.000000   80.000000    8.000000    6.000000  512.329200
    

    男女船舱登记生还率

    接下来使用数据透视表,将原有数据表重新划分为一张透视表来查看不同性别及不同船舱的生还率

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    
    titanic=pd.read_csv('titanic.csv')
    print(titanic.pivot_table('survived',index='who',columns='class'))
    
    >>>
    class     First    Second     Third
    who                                
    child  0.833333  1.000000  0.431034
    man    0.352941  0.080808  0.119122
    woman  0.978022  0.909091  0.491228
    

    我们发现,除了儿童以外,船舱登记越高,生还率越高,尤其是女性

    排除异常

    上面我们发现二等舱的儿童生还率竟然达到了100%,这是一个相对来说异常的数字,我们自然要去查看下所有的二等舱的儿童

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    
    titanic=pd.read_csv('titanic.csv')
    # print(titanic.head().T)
    # print(titanic.describe())
    # print(titanic.pivot_table('survived',index='who',columns='class'))
    child=titanic.set_index('who').T['child'].T
    print(child.reset_index().pivot_table('survived',index='who',columns='class',aggfunc='sum'))
    print(child.reset_index().pivot_table('survived',index='who',columns='class',aggfunc='count'))
    >>>
    class  First  Second  Third
    who                        
    child      5      19     25
    class  First  Second  Third
    who                        
    child      6      19     58
    

    我们发现之所以一等舱的儿童生还率低于二等舱儿童生还率,一方面是因为一等舱位的儿童太少了,另外一方面确实是二等舱的儿童全部得救

    美国人生日分析

    下面我们将使用上面的美国人生日来进行分析

    整体情况

    首先还是了解一下整个数据集的情况

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    
    
    birthday=pd.read_csv('birthdates-1968-1988.csv')
    
    print(birthday)
    print(birthday.describe())
    >>>
          year  month  day  births  day_of_year  day_of_week
    0     1969      1    1    8486            1            3
    1     1969      1    2    9002            2            4
    2     1969      1    3    9542            3            5
    3     1969      1    4    8960            4            6
    4     1969      1    5    8390            5            7
    ...    ...    ...  ...     ...          ...          ...
    7300  1988     12   27   11528          362            2
    7301  1988     12   28   11847          363            3
    7302  1988     12   29   11704          364            4
    7303  1988     12   30   11837          365            5
    7304  1988     12   31    9133          366            6
    
    [7305 rows x 6 columns]
                  year        month          day        births  day_of_year  day_of_week
    count  7305.000000  7305.000000  7305.000000   7305.000000  7305.000000  7305.000000
    mean   1978.501027     6.522930    15.729637   9648.940178   183.753593     4.000274
    std       5.766735     3.448939     8.800694   1127.315229   105.621885     1.999795
    min    1969.000000     1.000000     1.000000   6675.000000     1.000000     1.000000
    25%    1974.000000     4.000000     8.000000   8792.000000    93.000000     2.000000
    50%    1979.000000     7.000000    16.000000   9622.000000   184.000000     4.000000
    75%    1984.000000    10.000000    23.000000  10510.000000   275.000000     6.000000
    max    1988.000000    12.000000    31.000000  12851.000000   366.000000     7.000000
    

    每年的人口出生情况

    接下来看一下每年的人口出生情况

    由于这里给定的数据表是每天的人口数,所以我们首先需要计算每年出生的人口数,然后绘制出每年出生人口的折线图

    首先要计算每年出生的人口,那么就需要使用sum来对每个年份出生的人口求和

    而且从上面对数据集的整体情况的了解中我们知道,每年中每一天出生的人口和年份是关联的

    所以我们可以使用数据透视表来指定以年份来分割原表的同时,使用sum来对births求和,这样将会返回一个Series对象

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    birthday=pd.read_csv('birthdates-1968-1988.csv')
    
    birthnumber=birthday.pivot_table('births',index='year',aggfunc='sum')
    print(birthnumber)
    plt.plot(birthnumber.reset_index()['year'],birthnumber['births'])
    plt.xlabel('year')
    plt.ylabel('number')
    plt.title('Birth Number of Every Year')
    plt.show()
    

    在这里插入图片描述

    注意,这里虽然我们指定了每个数据点的横轴,但是绘图的时候matplotlib却依旧对年份区间取了均值,实际上这是由于matplotlib的默认特性,关于如何解决这一点,将在后面matplotlib的讲解中讲解

    创建日期索引

    为了承接后面的Pandas向量化字符串操作和Pandas处理时间序列两节内容,我们下面不妨先为每个数据创建一个日期索引

    print(birthday)
    print(type(birthday.iloc[0,1]),'\t',type(birthday.iloc[0,2]),type(birthday.iloc[0,3]))
    birthday.index=pd.to_datetime(10000*birthday['year']+100*birthday['month']+birthday['day'],format='%Y%m%d')
    print(birthday)
    >>>
          year  month  day  births  day_of_year  day_of_week
    0     1969      1    1    8486            1            3
    1     1969      1    2    9002            2            4
    2     1969      1    3    9542            3            5
    3     1969      1    4    8960            4            6
    4     1969      1    5    8390            5            7
    ...    ...    ...  ...     ...          ...          ...
    7300  1988     12   27   11528          362            2
    7301  1988     12   28   11847          363            3
    7302  1988     12   29   11704          364            4
    7303  1988     12   30   11837          365            5
    7304  1988     12   31    9133          366            6
    
    [7305 rows x 6 columns]
    
    <class 'numpy.int64'>    <class 'numpy.int64'> <class 'numpy.int64'>
    
                year  month  day  births  day_of_year  day_of_week
    1969-01-01  1969      1    1    8486            1            3
    1969-01-02  1969      1    2    9002            2            4
    1969-01-03  1969      1    3    9542            3            5
    1969-01-04  1969      1    4    8960            4            6
    1969-01-05  1969      1    5    8390            5            7
    ...          ...    ...  ...     ...          ...          ...
    1988-12-27  1988     12   27   11528          362            2
    1988-12-28  1988     12   28   11847          363            3
    1988-12-29  1988     12   29   11704          364            4
    1988-12-30  1988     12   30   11837          365            5
    1988-12-31  1988     12   31    9133          366            6
    
    [7305 rows x 6 columns]
    

    注意,我们这里使用了to_datetime方法将会返回一个datetime对象,这是后面会在的Pandas处理时间序列这节中详细讲解

    所以我们直接调用datetime对象的dayofweek方法来快速计算这个日期是周几

    print(birthday)
    print(type(birthday.iloc[0,1]),'\t',type(birthday.iloc[0,2]),type(birthday.iloc[0,3]))
    birthday.index=pd.to_datetime(10000*birthday['year']+100*birthday['month']+birthday['day'],format='%Y%m%d')
    birthday['day_of_week_2']=birthday.index.dayofweek
    print(birthday)
    >>>
          year  month  day  births  day_of_year  day_of_week
    0     1969      1    1    8486            1            3
    1     1969      1    2    9002            2            4
    2     1969      1    3    9542            3            5
    3     1969      1    4    8960            4            6
    4     1969      1    5    8390            5            7
    ...    ...    ...  ...     ...          ...          ...
    7300  1988     12   27   11528          362            2
    7301  1988     12   28   11847          363            3
    7302  1988     12   29   11704          364            4
    7303  1988     12   30   11837          365            5
    7304  1988     12   31    9133          366            6
    
    [7305 rows x 6 columns]
    <class 'numpy.int64'>    <class 'numpy.int64'> <class 'numpy.int64'>
                year  month  day  births  day_of_year  day_of_week  day_of_week_2
    1969-01-01  1969      1    1    8486            1            3              2
    1969-01-02  1969      1    2    9002            2            4              3
    1969-01-03  1969      1    3    9542            3            5              4
    1969-01-04  1969      1    4    8960            4            6              5
    1969-01-05  1969      1    5    8390            5            7              6
    ...          ...    ...  ...     ...          ...          ...            ...
    1988-12-27  1988     12   27   11528          362            2              1
    1988-12-28  1988     12   28   11847          363            3              2
    1988-12-29  1988     12   29   11704          364            4              3
    1988-12-30  1988     12   30   11837          365            5              4
    1988-12-31  1988     12   31    9133          366            6              5
    
    [7305 rows x 7 columns]
    

    但是这里出现了一些问题,可能是由于低层计算的问题

    不同年代的星期日均出生数

    利用上面得到的day_of_week这一列,我们可以看看不同年代不同星期的日均出生

    这里直接用原有的day_of_week

    print(birthday)
    print(type(birthday.iloc[0,1]),'\t',type(birthday.iloc[0,2]),type(birthday.iloc[0,3]))
    birthday['decade']=birthday['year']//10*10
    birthday.index=pd.to_datetime(10000*birthday['year']+100*birthday['month']+birthday['day'],format='%Y%m%d')
    print(birthday)
    PviotTable_decade_week=birthday.pivot_table('births',index='day_of_week',columns='decade',aggfunc='mean')
    print(PviotTable_decade_week)
    PviotTable_decade_week.plot()
    plt.gca().set_xticklabels(['a','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'])
    plt.ylabel('Mean Births by day')
    plt.show()
    >>>
    decade               1960         1970          1980
    day_of_week                                         
    1            10127.653846  9378.195402  10553.814499
    2            10572.192308  9770.504798  11007.685106
    3            10149.245283  9500.752399  10735.285106
    4             9956.576923  9393.846743  10666.970213
    5            10215.769231  9564.191571  10786.174468
    6             9302.115385  8415.568966   8967.802128
    7             8684.692308  7958.557471   8616.240938
    

    得到图像如下:

    在这里插入图片描述

    这里由于直接使用set_xticklabels方法的话,传入列表的第一个值会被丢弃,所以才会添加一个‘a’

    此外Matplotlib是完美支持Pandas的,所以我们可以直接调用DataFrame对象的plot方法来绘图,并且会直接添加图例

    DataFrame_1=pd.DataFrame(np.random.randint(0,10,(6,4)))
    Series_1=pd.Series(np.random.randint(0,10,10))
    print(DataFrame_1)
    DataFrame_1.plot()
    plt.show()
    >>>
       0  1  2  3
    0  6  4  2  1
    1  3  6  4  1
    2  8  9  8  6
    3  8  7  8  3
    4  1  5  7  6
    5  8  9  3  6
    

    在这里插入图片描述

    各年份平均每天的出生数

    我们如果忽略年份的差异,而去查看各年份平均每天的出生数,那么将会从图表中发现出生数和一年中每日的关系

    分析一下,我们将对每年中的各日的出生人数求平均数所以value参数就是birth,然后为了便于画图,需要将日期作为行索引,所以我们依旧需要使用数据透视表

    但是有一个问题,如果我们直接指定使用的日期为日的话,那么同一年的1~12月也会被计算

    print(birthday)
    print(type(birthday.iloc[0,1]),'\t',type(birthday.iloc[0,2]),type(birthday.iloc[0,3]))
    birthday['decade']=birthday['year']//10*10
    birthday.index=pd.to_datetime(10000*birthday['year']+100*birthday['month']+birthday['day'],format='%Y%m%d')
    print(birthday)
    
    birthday_by_date=birthday.pivot_table('births',index=birthday.index.day,aggfunc='mean')
    # birthday_by_date=birthday.pivot_table('births',index=[birthday.index.month,birthday.index.day],aggfunc='mean')
    print(birthday_by_date)
    >>>
          year  month  day  births  day_of_year  day_of_week
    0     1969      1    1    8486            1            3
    1     1969      1    2    9002            2            4
    2     1969      1    3    9542            3            5
    3     1969      1    4    8960            4            6
    4     1969      1    5    8390            5            7
    ...    ...    ...  ...     ...          ...          ...
    7300  1988     12   27   11528          362            2
    7301  1988     12   28   11847          363            3
    7302  1988     12   29   11704          364            4
    7303  1988     12   30   11837          365            5
    7304  1988     12   31    9133          366            6
    
    [7305 rows x 6 columns]
    <class 'numpy.int64'>    <class 'numpy.int64'> <class 'numpy.int64'>
                year  month  day  births  day_of_year  day_of_week  decade
    1969-01-01  1969      1    1    8486            1            3    1960
    1969-01-02  1969      1    2    9002            2            4    1960
    1969-01-03  1969      1    3    9542            3            5    1960
    1969-01-04  1969      1    4    8960            4            6    1960
    1969-01-05  1969      1    5    8390            5            7    1960
    ...          ...    ...  ...     ...          ...          ...     ...
    1988-12-27  1988     12   27   11528          362            2    1980
    1988-12-28  1988     12   28   11847          363            3    1980
    1988-12-29  1988     12   29   11704          364            4    1980
    1988-12-30  1988     12   30   11837          365            5    1980
    1988-12-31  1988     12   31    9133          366            6    1980
    
    [7305 rows x 7 columns]
             births
    1   9528.558333
    2   9596.533333
    3   9621.195833
    4   9527.450000
    5   9570.629167
    6   9616.970833
    7   9642.004167
    8   9676.566667
    9   9646.062500
    10  9696.654167
    11  9664.837500
    12  9678.983333
    13  9545.400000
    14  9731.462500
    15  9722.608333
    16  9718.566667
    17  9731.075000
    18  9728.954167
    19  9713.262500
    20  9740.129167
    21  9706.512500
    22  9657.129167
    23  9604.891667
    24  9543.750000
    25  9516.562500
    26  9584.200000
    27  9642.033333
    28  9702.625000
    29  9729.297778
    30  9734.954545
    31  9581.285714
    

    为此,我们需要创建多级索引,来避免每月的日期被计算

    print(birthday)
    print(type(birthday.iloc[0,1]),'\t',type(birthday.iloc[0,2]),type(birthday.iloc[0,3]))
    birthday['decade']=birthday['year']//10*10
    birthday.index=pd.to_datetime(10000*birthday['year']+100*birthday['month']+birthday['day'],format='%Y%m%d')
    print(birthday)
    birthday_by_date=birthday.pivot_table('births',index=[birthday.index.month,birthday.index.day],aggfunc='mean')
    print(birthday_by_date)
    >>>
          year  month  day  births  day_of_year  day_of_week
    0     1969      1    1    8486            1            3
    1     1969      1    2    9002            2            4
    2     1969      1    3    9542            3            5
    3     1969      1    4    8960            4            6
    4     1969      1    5    8390            5            7
    ...    ...    ...  ...     ...          ...          ...
    7300  1988     12   27   11528          362            2
    7301  1988     12   28   11847          363            3
    7302  1988     12   29   11704          364            4
    7303  1988     12   30   11837          365            5
    7304  1988     12   31    9133          366            6
    
    [7305 rows x 6 columns]
    <class 'numpy.int64'>    <class 'numpy.int64'> <class 'numpy.int64'>
                year  month  day  births  day_of_year  day_of_week  decade
    1969-01-01  1969      1    1    8486            1            3    1960
    1969-01-02  1969      1    2    9002            2            4    1960
    1969-01-03  1969      1    3    9542            3            5    1960
    1969-01-04  1969      1    4    8960            4            6    1960
    1969-01-05  1969      1    5    8390            5            7    1960
    ...          ...    ...  ...     ...          ...          ...     ...
    1988-12-27  1988     12   27   11528          362            2    1980
    1988-12-28  1988     12   28   11847          363            3    1980
    1988-12-29  1988     12   29   11704          364            4    1980
    1988-12-30  1988     12   30   11837          365            5    1980
    1988-12-31  1988     12   31    9133          366            6    1980
    
    [7305 rows x 7 columns]
             births
    1  1    8018.45
       2    8494.80
       3    9001.80
       4    9142.70
       5    9207.25
    ...         ...
    12 27   9700.30
       28  10088.40
       29  10240.30
       30  10344.70
       31   9718.40
    
    [366 rows x 1 columns
    

    最后绘图即可

    print(birthday)
    print(type(birthday.iloc[0,1]),'\t',type(birthday.iloc[0,2]),type(birthday.iloc[0,3]))
    birthday['decade']=birthday['year']//10*10
    birthday.index=pd.to_datetime(10000*birthday['year']+100*birthday['month']+birthday['day'],format='%Y%m%d')
    print(birthday)
    birthday_by_date=birthday.pivot_table('births',index=[birthday.index.month,birthday.index.day],aggfunc='mean')
    print(birthday_by_date)
    fig,ax=plt.subplots(figsize=(12,4))
    birthday_by_date.plot(ax=ax)
    plt.show()
    >>>
          year  month  day  births  day_of_year  day_of_week
    0     1969      1    1    8486            1            3
    1     1969      1    2    9002            2            4
    2     1969      1    3    9542            3            5
    3     1969      1    4    8960            4            6
    4     1969      1    5    8390            5            7
    ...    ...    ...  ...     ...          ...          ...
    7300  1988     12   27   11528          362            2
    7301  1988     12   28   11847          363            3
    7302  1988     12   29   11704          364            4
    7303  1988     12   30   11837          365            5
    7304  1988     12   31    9133          366            6
    
    [7305 rows x 6 columns]
    <class 'numpy.int64'>    <class 'numpy.int64'> <class 'numpy.int64'>
                year  month  day  births  day_of_year  day_of_week  decade
    1969-01-01  1969      1    1    8486            1            3    1960
    1969-01-02  1969      1    2    9002            2            4    1960
    1969-01-03  1969      1    3    9542            3            5    1960
    1969-01-04  1969      1    4    8960            4            6    1960
    1969-01-05  1969      1    5    8390            5            7    1960
    ...          ...    ...  ...     ...          ...          ...     ...
    1988-12-27  1988     12   27   11528          362            2    1980
    1988-12-28  1988     12   28   11847          363            3    1980
    1988-12-29  1988     12   29   11704          364            4    1980
    1988-12-30  1988     12   30   11837          365            5    1980
    1988-12-31  1988     12   31    9133          366            6    1980
    
    [7305 rows x 7 columns]
             births
    1  1    8018.45
       2    8494.80
       3    9001.80
       4    9142.70
       5    9207.25
    ...         ...
    12 27   9700.30
       28  10088.40
       29  10240.30
       30  10344.70
       31   9718.40
    
    [366 rows x 1 columns]
    

    在这里插入图片描述

    我们发现,每逢美国的节假日出生率就会降低,例如:独立日,劳动节,圣诞节和新年

    这种现象可能是由于医院放假到底到医院接生的人变少所导致的

    展开全文
  • 次坐标轴能够很好的处理单位数量级不同的数据,绘制在一张图表中,有利于更好的理解数据之间的关联关系。双坐标轴图表思路:双坐标轴图表表格图表——插入柱形图——图表设置——图表优化。步骤:1、原始表格如下:...

    在实际工作中,如果有两列数据的单位数量级相差很大,如何制作在一张图表里面呢?用次坐标轴来实现。

    次坐标轴能够很好的处理单位数量级不同的数据,绘制在一张图表中,有利于更好的理解数据之间的关联关系。

    5f40e5220024970e32aa39ecb42cc869.png

    双坐标轴图表

    思路:

    6e1058cd051500b134b1e4d6484cecb2.png

    双坐标轴图表

    表格图表——插入柱形图——图表设置——图表优化。

    步骤:

    1、原始表格如下:

    04b5bf1e32f673994b2683c85fca254c.png

    从表中数据可以看出,数量和金额的数据单位数量级相差很大。

    2、设置背景色:

    为了得到更好的展示效果,打开PowerPoint软件,新建幻灯片,右键“设置背景格式”,选择“纯色填充”之黑色。

    3、插入柱状图:

    0f6cfce9b1eb3fcf11c103f56ecc4f93.gif

    执行“插入”菜单-“插图”之“图表”-“条形图”之“堆积柱状图”,“确定”之;在Microsoft PowerPoint中的图表中输入或Copy步骤1中的原始表格数据,并删除多余的列,关闭图表窗口。

    数量数据的柱形图和金额的柱形图比较可见其区别

    4、更改实际成绩列为拆线:

    0304098dbe42aad924d67f5a1aeb784b.gif

    选择图表,执行“设计”菜单-“更改图表类型”,打开更改图表类型对话框,选择最下面的“组合图”,选择“数量”系列的图表类型为“带数据标记的折线图”、勾选“次坐标轴”,选择“金额”系列的图表类型为“簇状柱形图”,确定之。

    这样,数量系列数据变更为拆线形式。

    5、图表简化:

    864e7cdc0fdf6b692a7994992ff5208a.gif

    点击图表右上角的“+”按钮,选择实际成绩的折线,设置数据标签位于上方,取消勾选网格线,使图表更简捷设置图表文字为白色、字号16、更改图表标题。

    6、纵轴刻度设置:

    ad13334eef63d7ee7b7869e51fdb281e.gif

    选择图表左侧的纵坐标刻度,双击打开“设置坐标轴格式”对话框,选择“刻度线”-“主刻度线类型”为“外部”;同理设置次纵轴刻度。

    ※ 小贴士:

    1、也可根据实际需要,添加动画效果。

    2、可以按需要将柱形图+拆线图更改为双折线图,具体操作为:选择图表,执行“设计”菜单-“更改图表类型”,打开更改图表类型对话框,选择最下面的“组合图”,选择“金额”系列的图表类型为“带数据标记的折线图”,确定之。

    297492f498216ba3b99a2e1e223e00d6.gif

    ※【素材获取:请认准头条号“学习Bank”,关注、点赞、评论、收藏、转发、留邮箱,^_^注明文章标题^_^】※

    展开全文
  • 次坐标轴能够很好的处理单位数量级不同的数据,绘制在一张图表中,有利于更好的理解数据之间的关联关系。双坐标轴图表思路:双坐标轴图表表格图表——插入柱形图——图表设置——图表优化。步骤:1、原始表格如下:...

    在实际工作中,如果有两列数据的单位数量级相差很大,如何制作在一张图表里面呢?用次坐标轴来实现。

    次坐标轴能够很好的处理单位数量级不同的数据,绘制在一张图表中,有利于更好的理解数据之间的关联关系。

    18ce11e943e588ad56f4a0caeb0739ee.png

    双坐标轴图表

    思路:

    5fe6eb77f5ccb62894829fa15e452961.png

    双坐标轴图表

    表格图表——插入柱形图——图表设置——图表优化。

    步骤:

    1、原始表格如下:

    0a4f3381a673b18abed58892cae990d6.png

    从表中数据可以看出,数量和金额的数据单位数量级相差很大。

    2、设置背景色:

    为了得到更好的展示效果,打开PowerPoint软件,新建幻灯片,右键“设置背景格式”,选择“纯色填充”之黑色。

    3、插入柱状图:

    618f3ac066f29c4692df89b700a377cd.gif

    执行“插入”菜单-“插图”之“图表”-“条形图”之“堆积柱状图”,“确定”之;在Microsoft PowerPoint中的图表中输入或Copy步骤1中的原始表格数据,并删除多余的列,关闭图表窗口。

    数量数据的柱形图和金额的柱形图比较可见其区别

    4、更改实际成绩列为拆线:

    e8d814942fee00b1b1db5b2ceff03936.gif

    选择图表,执行“设计”菜单-“更改图表类型”,打开更改图表类型对话框,选择最下面的“组合图”,选择“数量”系列的图表类型为“带数据标记的折线图”、勾选“次坐标轴”,选择“金额”系列的图表类型为“簇状柱形图”,确定之。

    这样,数量系列数据变更为拆线形式。

    5、图表简化:

    406846c4aa8ea8efeb2d8e5af6f29211.gif

    点击图表右上角的“+”按钮,选择实际成绩的折线,设置数据标签位于上方,取消勾选网格线,使图表更简捷设置图表文字为白色、字号16、更改图表标题。

    6、纵轴刻度设置:

    7e2ae3d589dc9a8c0874d84a3bb22882.gif

    选择图表左侧的纵坐标刻度,双击打开“设置坐标轴格式”对话框,选择“刻度线”-“主刻度线类型”为“外部”;同理设置次纵轴刻度。

    ※ 小贴士:

    1、也可根据实际需要,添加动画效果。

    2、可以按需要将柱形图+拆线图更改为双折线图,具体操作为:选择图表,执行“设计”菜单-“更改图表类型”,打开更改图表类型对话框,选择最下面的“组合图”,选择“金额”系列的图表类型为“带数据标记的折线图”,确定之。

    203528e8c9e69c17fbf11de78181bf0e.gif

    ※【素材获取:请认准头条号“学习Bank”,关注、点赞、评论、收藏、转发、留邮箱,^_^注明文章标题^_^】※

    展开全文
  • 但是如果每个工作表的结构完全不同,行列数也不一致,唯一的关联就是每个表中至少有一列数据可以跟其他任意一个表的某列对应上,那就需要利用这些关联的列,把所有表连接成一张总表。如果用函数解决会非常繁琐,比如...
  • 第一章 准备工作

    2021-05-13 08:01:59
    如何基于数据进行分析以及用于大型数据集的数据准备工具。 关于Python语言的一些准备性工作 Python解释器 Python是一种解释型语言,Python解释器通过一次执行一条语句来运行程序,标准式的交互式python解释器可以...
  • 使用我们功能丰富,简单且易于使用的绘图工具,您只需单击几下即可开发出完整的数据模型。 型号类型 Navicat Data Modeler使您能够为各种受众构建高质量的概念,逻辑和物理数据模型。使用模型转换功能,可以将概念性...
  • 数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    (3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说 法对吗?举例说明之。 (4)评价各种不同数据结构的标准是什么? 5.评价一个好的算法,您是从哪几方面来考虑的? ...
  • 2.navicate如何知道sql执行效率

    千次阅读 2019-10-19 09:39:18
    我这两天一直在纠结表与表的关联查询,如果数据量大,究竟是使用子查询还是使用关联查询,并且上网查了一些资料 然而并没有头绪,而且耽误了一点工作。非常烦恼。 2.解决方案 其实JOIN 和 子查询的操作在不同的情况...
  • 关于第一个问题,我们以前的做法是:如果只是两层关联关系,那么通常是先将子表的所有数据全部删除,然后再插入从页面提交的列表记录,而不需要区分新增不是修改。而如果层次超过两层,则只能采取遍历的方式,即先...
  • 任务10: EXCEL基本操作之保护工作表、高级筛选 任务11: 数据验证 任务12: 合并计算之模拟运算 任务13: 合并计算之去重 任务14: 合并计算之多种计算 第3章: Excel数据分析高级之 - 公式、函数、透视表与图表...
  • 但是如果每个工作表的结构完全不同,行列数也不一致,唯一的关联就是每个表中至少有一列数据可以跟其他任意一个表的某列对应上,那就需要利用这些关联的列,把所有表连接成一张总表。如果用函数解决会非常繁琐,比如...
  • 研究如何从有限元分析数据中提取设计知识方法。对某个设计问题,依据设计变量的不同取值构建正交试验;对正交试验中每一种试验方案变量取值采用Pro/E建立设计问题实体模型;该实体模型经ADAMS动力学与运动...
  • 将非类型化数据集添加到窗体或组件:描述如何创建无关联架构的数据集。 演练:将数据源映射到数据集:描述如何基于另一个架构,使用数据适配器和列映射从数据库将数据加载到数据集。 数据适配器 数据适配器...
  •  现在让我们详细看看代码,来感受下Model,View,Controller之间如何关联,如何协同工作的。 class CSphere { public: ... .... //更新Graphic-VIEW BOOL UpdateGraphicView(HWND hWnd,const CRect &rect,BOOL...
  • excel使用

    2012-11-25 17:06:01
    输入完毕之后,再次按下键盘上的Ctrl键,然后使用鼠标左键单击所选择的多个工作表,解除这些工作表的联系,否则在一张表单中输入的数据会接着出现在选中的其它工作表内。(6) 不连续单元格填充同一数据选中一个...
  • EF Core 学习笔记

    2020-12-30 00:03:37
    EF Core 学习笔记EF Core 学习笔记准备工作如何使用 EF Core 生成数据库设置字段属性实体间的对应关系1:n 关系m:n 关系1:1 关系数据库操作添加、查询单条数据添加批量数据库操作插入两个不同表的数据查询能完成查询...
  • 如一个图表往往对应后端几个数据表的自定义关联查询,而且筛选条件也可以根据输入条件动态变化,更复杂的情况是由于某些原因,底层数据源表加工不规范,导致多个图表使用同一份数据源时候,需要做较多的再加工处理...
  • SQL挑战-源码

    2021-02-18 15:50:39
    由生成的以下ERD概述了表如何相互关联: 数据分析 然后在pgAdmin 4上运行了许多查询以查看不同的员工记录。 这是一个示例查询: 这是相应的数据输出: 附加数据可视化 最后,为了更深入地了解员工的工资数据,...
  • 10.4.3 数据库表的检索查询 216 小结 217 复习题 217 练习题 217 实验练习题 217 参考文献 218 第11章 XML:可扩展标记语言 219 11.1 XML层次(树)数据模型 219 11.2 XML文档、DTD和XML模式 ...
  • 引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
  • ETL架构师面试题

    2015-06-11 09:39:29
    14.如何来量化数据仓库中的数据质量? 建立映射 15.什么是代理键?简述代理键替换管道如何工作。 16.为什么在ETL的过程中需要对日期进行特殊处理? 17.简述对一致性维度的三种基本的交付步骤。 18.简述三种基本...
  • 工作表的快速定位 工作表的链接 第二节、快速准确输入数据 数字、日期输入技巧 快速填充特殊技巧 导入外部数据 第三节、大型表格的编辑、打印技巧 第二章、表格数据安全控制 第一节、利用有效性控制表格内容输入 ...
  • 使用我们功能丰富,简单且易于使用的绘图工具,您只需单击几下即可开发出完整的数据模型。 型号类型 Navicat Data Modeler使您能够为各种受众构建高质量的概念,逻辑和物理数据模型。使用模型转换功能,可以将概念性...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 277
精华内容 110
关键字:

不同工作表的数据如何关联