天池大数据竞赛 Spaceack带你利用Pandas,趋势图与桑基图分析美国选民候选人喜好度

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
文件存储 NAS,50GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 竞赛地址: https://tianchi.aliyun.com/competition/entrance/531837/introduction首先,这是一篇面向新人的教程导向的分析文章,(by the way其实我也是新手,从比赛开始才学的Pandas库,这也是我的一篇学习笔记),所以会包含很多函数的基础用法,解题思路等等, 流程会比较详细。其次,本文在官方教程基础上会加入创新内容,但是绝不会为了用而用某种新方法,一定本着分析数据有所帮助的原则和对数据敬畏的态度来做。

长文预警
竞赛地址: https://tianchi.aliyun.com/competition/entrance/531837/introduction

首先,这是一篇面向新人的教程导向的分析文章,(by the way其实我也是新手,从比赛开始才学的Pandas库,这也是我的一篇学习笔记),所以会包含很多函数的基础用法,解题思路等等, 流程会比较详细。

其次,本文在官方教程基础上会加入创新内容,但是绝不会为了用而用某种新方法,一定本着分析数据有所帮助的原则和对数据敬畏的态度来做。

再者,为了更方便学习,请点击右上角蓝色的 Star 和 Fork 按钮。

[数据集下载: ](!https://tianchi.aliyun.com/competition/entrance/531837/introduction?spm=5176.12281973.1005.3.11ae1f540dSho6)
https://tianchi.aliyun.com/competition/entrance/531837/introduction?spm=5176.12281973.1005.3.11ae1f540dSho6
# 导入相关处理包
import pandas as pd
# 加入下面这条语句可以在 JupyterLab 上渲染画布( JupyterLab 是天池实验室的一部分)
%matplotlib inline

数据预处理

数据预处理部分包含 数据导入数据探索数据整合格式转换等多个步骤。这些步骤可穿插执行。

这里第一步就是数据导入

Pandas 提供的 IO 工具组支持多种数据格式类型,包括基础的 CSV,JSON,SQL 格式。

这里用到 read_csv 方法

此方法第一个参数为文件路径, 这里对应着天池实验室挂载的数据,因为在 download 同一目录下, 所以直接写文件名即可。

第二个参数 sep 为分隔符,用于将每行分解为若干列。默认是,逗号。

第三个参数 names 为列名列表,当文件不包含列名时使用,列名列表中不允许有重复值。

扩展:若我们要分析文件中包含列名呢?有个 header 参数可以使用,当列名是首行时,设置 header=0。举一反三,有时候文件首行是文件的标题,第二行才是列名,那么设置 header=1 即可。

将委员会和候选人一一对应,通过CAND_ID关联两个表

由于候选人和委员会的联系表中无候选人姓名,只有候选人ID(CAND_ID),所以需要通过CAND_ID 从候选人表中获取到候选人姓名,最终得到候选人与委员会联系表 ccl

# 读取候选人信息,由于原始数据没有表头,需要添加表头
candidates = pd.read_csv("weball20.txt", sep = '|',names=['CAND_ID','CAND_NAME','CAND_ICI','PTY_CD','CAND_PTY_AFFILIATION','TTL_RECEIPTS',
                                                          'TRANS_FROM_AUTH','TTL_DISB','TRANS_TO_AUTH','COH_BOP','COH_COP','CAND_CONTRIB',
                                                          'CAND_LOANS','OTHER_LOANS','CAND_LOAN_REPAY','OTHER_LOAN_REPAY','DEBTS_OWED_BY',
                                                          'TTL_INDIV_CONTRIB','CAND_OFFICE_ST','CAND_OFFICE_DISTRICT','SPEC_ELECTION','PRIM_ELECTION','RUN_ELECTION'
                                                          ,'GEN_ELECTION','GEN_ELECTION_PRECENT','OTHER_POL_CMTE_CONTRIB','POL_PTY_CONTRIB',
                                                          'CVG_END_DT','INDIV_REFUNDS','CMTE_REFUNDS'])
# 读取候选人和委员会的联系信息
ccl = pd.read_csv("ccl.txt", sep = '|',names=['CAND_ID','CAND_ELECTION_YR','FEC_ELECTION_YR','CMTE_ID','CMTE_TP','CMTE_DSGN','LINKAGE_ID'])

数据整合

我们现在已导入 candidates 候选人信息表,ccl 候选人与委员会关联表两张表。均为 DataFrame 类型。

聪明的你会发现,两个表的表头都包含 CAND_ID 这个字段,那么这两张表会根据这个字段有所联系。那么我们可以用 merge 这个神奇的方法合并两张表。

merge 方法有几个重要的参数如下:

  1. left : 在这里就是我们要合并左边的 ccl 表。
  2. right : 在这里就是我们要合并右边的 candidates 表。
  3. how : 这是个带有默认参数的隐藏参数,默认为 inner (内连接),学过 SQL 的同学都懂得~ 肯定还会包含 outer(外链接)、left(左连接)、right(右连接)
  4. on :这个参数用来连接列名,若没有其它连接项,默认会把左右两个表头的交集字段作为连接字段。下面的代码是省略的写法,也可以这样表示 ccl = pd.merge(ccl, candidates, on="CAND_ID", how="inner")
  5. left_on :用来指定左侧作为连接的表头。
  6. right_on:用来指定右侧作为连接的表头, 下面的代码是省略的写法,也可以这样表示 ccl = pd.merge(ccl, candidates, left_on="CAND_ID", right_on="CAND_ID", how="inner")
# 关联两个表数据
ccl = pd.merge(ccl, candidates)
# 提取出所需要的列
ccl = pd.DataFrame(ccl, columns=[ 'CMTE_ID','CAND_ID', 'CAND_NAME','CAND_PTY_AFFILIATION'])
# 读取个人捐赠数据,由于原始数据没有表头,需要添加表头
# 提示:读取本文件大概需要5-10s
itcont = pd.read_csv('itcont_2020_20200722_20200820.txt', sep='|',names=['CMTE_ID','AMNDT_IND','RPT_TP','TRANSACTION_PGI','IMAGE_NUM','TRANSACTION_TP','ENTITY_TP','NAME','CITY','STATE','ZIP_CODE','EMPLOYER','OCCUPATION','TRANSACTION_DT','TRANSACTION_AMT','OTHER_ID','TRAN_ID','FILE_NUM','MEMO_CD','MEMO_TEXT','SUB_ID'],low_memory=False)
# 将候选人与委员会关系表ccl和个人捐赠数据表itcont合并,通过 CMTE_ID
c_itcont =  pd.merge(ccl, itcont)

数据探索

# 查看目前数据前6行, 若省略行数,默认显示5行
c_itcont.head(6)
CMTE_ID CAND_ID CAND_NAME CAND_PTY_AFFILIATION AMNDT_IND RPT_TP TRANSACTION_PGI IMAGE_NUM TRANSACTION_TP ENTITY_TP ... EMPLOYER OCCUPATION TRANSACTION_DT TRANSACTION_AMT OTHER_ID TRAN_ID FILE_NUM MEMO_CD MEMO_TEXT SUB_ID
0 C00698084 H0AZ02182 MORGAN, JOSEPH DAVID REP A Q3 P2020 202010069285031369 15 IND ... RETIRED RETIRED 7242020 100 NaN SA11AI.4909 1444070 NaN NaN 4100820201856947991
1 C00698084 H0AZ02182 MORGAN, JOSEPH DAVID REP A Q3 P2020 202010069285031369 15 IND ... VA HOSPITAL LAB TECH 7242020 40 NaN SA11AI.4908 1444070 NaN NaN 4100820201856947993
2 C00698084 H0AZ02182 MORGAN, JOSEPH DAVID REP A Q3 P2020 202010069285031370 15 IND ... VA HOSPITAL LAB TECH 7312020 40 NaN SA11AI.4916 1444070 NaN NaN 4100820201856947994
3 C00725697 H0AZ03461 WOOD, DANIEL REP A Q3 G2020 202010079285052516 15 IND ... POWERS-LEAVITT INSURANCE AGENT 8102020 300 NaN SA11AI.4683 1444556 NaN NaN 4100920201857257629
4 C00725697 H0AZ03461 WOOD, DANIEL REP A Q3 G2020 202010079285052518 15 IND ... UNEMPLOYED NaN 8072020 500 NaN SA11AI.4612 1444556 NaN NaN 4100920201857257635
5 C00725697 H0AZ03461 WOOD, DANIEL REP A Q3 G2020 202010079285052519 15 IND ... SELF-EMPLOYED DVM 7312020 500 NaN SA11AI.4593 1444556 NaN NaN 4100920201857257636

6 rows × 24 columns

# 查看目前数据后3行, 若省略行数,默认显示5行
c_itcont.head(n=3)
CMTE_ID CAND_ID CAND_NAME CAND_PTY_AFFILIATION AMNDT_IND RPT_TP TRANSACTION_PGI IMAGE_NUM TRANSACTION_TP ENTITY_TP ... EMPLOYER OCCUPATION TRANSACTION_DT TRANSACTION_AMT OTHER_ID TRAN_ID FILE_NUM MEMO_CD MEMO_TEXT SUB_ID
0 C00698084 H0AZ02182 MORGAN, JOSEPH DAVID REP A Q3 P2020 202010069285031369 15 IND ... RETIRED RETIRED 7242020 100 NaN SA11AI.4909 1444070 NaN NaN 4100820201856947991
1 C00698084 H0AZ02182 MORGAN, JOSEPH DAVID REP A Q3 P2020 202010069285031369 15 IND ... VA HOSPITAL LAB TECH 7242020 40 NaN SA11AI.4908 1444070 NaN NaN 4100820201856947993
2 C00698084 H0AZ02182 MORGAN, JOSEPH DAVID REP A Q3 P2020 202010069285031370 15 IND ... VA HOSPITAL LAB TECH 7312020 40 NaN SA11AI.4916 1444070 NaN NaN 4100820201856947994

3 rows × 24 columns

# 查看数据规模 多少行 多少列
c_itcont.shape
(756205, 24)



# 查看整体数据信息,包括每个字段的名称、非空数量、字段的数据类型
c_itcont.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 756205 entries, 0 to 756204
Data columns (total 24 columns):
CMTE_ID                 756205 non-null object
CAND_ID                 756205 non-null object
CAND_NAME               756205 non-null object
CAND_PTY_AFFILIATION    756205 non-null object
AMNDT_IND               756205 non-null object
RPT_TP                  756205 non-null object
TRANSACTION_PGI         756205 non-null object
IMAGE_NUM               756205 non-null int64
TRANSACTION_TP          756205 non-null object
ENTITY_TP               756205 non-null object
NAME                    756205 non-null object
CITY                    756159 non-null object
STATE                   756160 non-null object
ZIP_CODE                756092 non-null object
EMPLOYER                737413 non-null object
OCCUPATION              741294 non-null object
TRANSACTION_DT          756205 non-null int64
TRANSACTION_AMT         756205 non-null int64
OTHER_ID                647200 non-null object
TRAN_ID                 756205 non-null object
FILE_NUM                756205 non-null int64
MEMO_CD                 220 non-null object
MEMO_TEXT               655693 non-null object
SUB_ID                  756205 non-null int64
dtypes: int64(5), object(19)
memory usage: 144.2+ MB


# 查看数据表中数据类型的列的数据分布情况
c_itcont.describe()
IMAGE_NUM TRANSACTION_DT TRANSACTION_AMT FILE_NUM SUB_ID
count 7.562050e+05 7.562050e+05 7.562050e+05 7.562050e+05 7.562050e+05
mean 2.020090e+17 7.887799e+06 1.504307e+02 1.439133e+06 4.091288e+18
std 4.071886e+11 3.857874e+05 2.320452e+03 2.325325e+03 4.642365e+15
min 2.020072e+17 7.222020e+06 -5.600000e+03 1.427865e+06 4.072420e+18
25% 2.020092e+17 7.312020e+06 2.000000e+01 1.440015e+06 4.092520e+18
50% 2.020092e+17 8.102020e+06 3.500000e+01 1.440320e+06 4.093020e+18
75% 2.020092e+17 8.152020e+06 1.000000e+02 1.440320e+06 4.093020e+18
max 2.020101e+17 8.202020e+06 1.500000e+06 1.445380e+06 4.101020e+18

格式转换

#空值处理,统一填充 NOT PROVIDED
c_itcont['STATE'].fillna('NOT PROVIDED',inplace=True)
c_itcont['EMPLOYER'].fillna('NOT PROVIDED',inplace=True)
c_itcont['OCCUPATION'].fillna('NOT PROVIDED',inplace=True)
# 对日期TRANSACTION_DT列进行处理
c_itcont['TRANSACTION_DT'] = c_itcont['TRANSACTION_DT'] .astype(str)
# 将日期格式改为年月日  7242020    
c_itcont['TRANSACTION_DT'] = [i[3:7]+i[0]+i[1:3] for i in c_itcont['TRANSACTION_DT'] ]

绘制收到捐赠额最多的两位候选人的总捐赠额变化趋势图

# 计算每个总统候选人所获得的捐款总额,然后排序,取前二位
c_itcont.groupby("CAND_NAME").sum().sort_values("TRANSACTION_AMT",ascending=False).head(2)
IMAGE_NUM TRANSACTION_AMT FILE_NUM SUB_ID
CAND_NAME
BIDEN, JOSEPH R JR 1.025834e+23 68111142.0 7.307496e+11 2.077270e+24
TRUMP, DONALD J. 1.181873e+22 16594982.0 8.417584e+10 2.396038e+23
# 提取需要的数据列
c_itcont0 = pd.DataFrame(c_itcont, columns=[ 'CAND_NAME', 'TRANSACTION_AMT', 'TRANSACTION_DT'])
# 已知所获得的捐款总额前两位的总统候选人分别是'BIDEN, JOSEPH R JR', 'TRUMP, DONALD J.', 筛选出来
c_itcont1 = c_itcont0[c_itcont0['CAND_NAME'].isin(['BIDEN, JOSEPH R JR', 'TRUMP, DONALD J.'])]
# 因为同一天会有多笔捐款入帐,需要做分组求和
c_itcont2 = c_itcont1.groupby(['CAND_NAME', 'TRANSACTION_DT']).sum()
# 因为我们要看总额的趋势图,所以要做累加
c_itcont3 = c_itcont2.groupby(['CAND_NAME', ]).cumsum()
# 现在很快可以达到预期目标了
c_itcont3
TRANSACTION_AMT
CAND_NAME TRANSACTION_DT
BIDEN, JOSEPH R JR 2020722 888622
2020723 1852227
2020724 3024292
2020725 3943847
2020726 5052629
2020727 6150050
2020728 7625248
2020729 8900851
2020730 9964382
2020731 12305972
2020801 13391021
2020802 14208260
2020803 15063070
2020804 16138452
2020805 17317433
2020806 18293448
2020807 19246279
2020808 20152637
2020809 20996972
2020810 22015682
2020811 26905056
2020812 32932121
2020813 38604052
2020814 41666574
2020815 44125928
2020816 46254874
2020817 49826137
2020818 53584270
2020819 58989963
2020820 68111142
TRUMP, DONALD J. 2020722 330603
2020723 554920
2020724 828209
2020725 1035861
2020726 1529042
2020727 2044076
2020728 2499171
2020729 3216022
2020730 4346359
2020731 6338855
2020801 6688166
2020802 6925401
2020803 7273299
2020804 7862177
2020805 8175442
2020806 8501605
2020807 8899471
2020808 9124955
2020809 9404411
2020810 10286254
2020811 10856855
2020812 11540551
2020813 12298919
2020814 12717476
2020815 13483142
2020816 13812398
2020817 14453930
2020818 15086445
2020819 15665254
2020820 16594982
# 整理下排列索引,这里用到了索引和列标题转换与转置操作
c_itcont4 = c_itcont3.unstack().T
c_itcont4
CAND_NAME BIDEN, JOSEPH R JR TRUMP, DONALD J.
TRANSACTION_DT
TRANSACTION_AMT 2020722 888622 330603
2020723 1852227 554920
2020724 3024292 828209
2020725 3943847 1035861
2020726 5052629 1529042
2020727 6150050 2044076
2020728 7625248 2499171
2020729 8900851 3216022
2020730 9964382 4346359
2020731 12305972 6338855
2020801 13391021 6688166
2020802 14208260 6925401
2020803 15063070 7273299
2020804 16138452 7862177
2020805 17317433 8175442
2020806 18293448 8501605
2020807 19246279 8899471
2020808 20152637 9124955
2020809 20996972 9404411
2020810 22015682 10286254
2020811 26905056 10856855
2020812 32932121 11540551
2020813 38604052 12298919
2020814 41666574 12717476
2020815 44125928 13483142
2020816 46254874 13812398
2020817 49826137 14453930
2020818 53584270 15086445
2020819 58989963 15665254
2020820 68111142 16594982

绘制收到捐赠额最多的两位候选人的总捐赠额变化趋势图

这里使用 plot 方法绘制趋势图,(由于天池实验室环境不是最新的库,兼容问题会报警告,但是不影响出图。 我在其它环境测试没问题,图的横坐标会有日期显示的。)

# grid参数 用来显示后面的辅助网格线, rot 使横坐标的日期以45度排列, 不会导致产生字符过长导致叠加的问题。(由于天池实验室环境不是最新的库,兼容问题会报警告,横坐标的日期标注无法显示。)
c_itcont4.plot(grid=True, rot=45)

trend.png

结论

由趋势图可以看出,在7月22日至8月20日期间,拜登收到的捐款总额明显高于特朗普。且在8月份有更为显著的变化。

使用桑基图分析美国各州对党派的贡献度

桑基图(Sankey),即桑基能量分流图,是一种高级可视化图形。常用于金融等数据的可视化分析。最明显的特征就是,始末端的分支宽度总和相等,即所有主支宽度的总和应与所有分出去的分支宽度的总和相等,保持能量的平衡。

一个州的捐款额可能会流向不同的党派,用桑基图表示的效果就非常好。可以很清楚看出某个党派的贡献流向。

这里要用到第三方库 pyecharts,用来画桑吉图比较方便,还支持交互式操作(鼠标悬停某条能量线高亮并显示金额数量),首先安装第三方库

!pip install pyecharts --user
Looking in indexes: https://mirrors.aliyun.com/pypi/simple
Requirement already satisfied: pyecharts in /data/nas/workspace/envs/python3.6/site-packages (1.9.0)
Requirement already satisfied: prettytable in /data/nas/workspace/envs/python3.6/site-packages (from pyecharts) (1.0.1)
Requirement already satisfied: simplejson in /data/nas/workspace/envs/python3.6/site-packages (from pyecharts) (3.17.2)
Requirement already satisfied: jinja2 in /opt/conda/lib/python3.6/site-packages (from pyecharts) (2.11.2)
Requirement already satisfied: setuptools in /opt/conda/lib/python3.6/site-packages (from prettytable->pyecharts) (49.6.0)
Requirement already satisfied: wcwidth in /opt/conda/lib/python3.6/site-packages (from prettytable->pyecharts) (0.2.5)
Requirement already satisfied: MarkupSafe>=0.23 in /opt/conda/lib/python3.6/site-packages (from jinja2->pyecharts) (1.1.1)


# 提取需要的数据列
c_itcont5 = pd.DataFrame(c_itcont, columns=[ 'STATE', 'TRANSACTION_AMT', 'CAND_PTY_AFFILIATION'])
# 提取党派集合
c_itcont_CAND_PTY_AFFILIATION = pd.DataFrame(c_itcont5,columns=['CAND_PTY_AFFILIATION'])
cgc = c_itcont_CAND_PTY_AFFILIATION.groupby('CAND_PTY_AFFILIATION').count()
node2 = list(cgc.index)
node2
['BDY',
 'CON',
 'DEM',
 'DFL',
 'GRE',
 'IND',
 'LIB',
 'NON',
 'NPA',
 'OTH',
 'REP',
 'UNK']



# 提取州集合
c_itcont_STATE = pd.DataFrame(c_itcont5,columns=['STATE'])
sgc = c_itcont_STATE.groupby('STATE').count()
node1 = list(sgc.index)
# 为方便阅读, 引入汉化字典
scp = {'AA': '美洲军',
 'AE': '军事地区',
 'AK': '阿拉斯加州',
 'AL': '阿拉巴马州',
 'AP': '太平洋军事机构',
 'AR': '阿肯色州',
 'AS': '美属萨摩亚群岛',
 'AZ': '阿利桑那州',
 'CA': '加利福尼亚州',
 'CO': '科罗拉多州',
 'CT': '康涅狄格州',
 'DC': '华盛顿DC',
 'DE': '特拉华州',
 'FL': '佛罗里达州',
 'FM': 'FM联邦',
 'GA': '乔治亚州',
 'GU': '关岛',
 'HI': '夏威夷州',
 'IA': '爱荷华州',
 'ID': '爱达荷州',
 'IL': '伊利诺斯州',
 'IN': '印第安纳州',
 'KS': '堪萨斯州',
 'KY': 'KY',
 'LA': '路易斯安那州',
 'MA': '马萨诸塞州',
 'MD': '马里兰州',
 'ME': '缅因州',
 'MI': '密歇根州',
 'MN': '明尼苏达州',
 'MO': '密苏里州',
 'MP': 'MP',
 'MS': '密西西比州',
 'MT': '蒙大拿州',
 'NC': '北卡罗来纳州',
 'ND': '北达科他州',
 'NE': '内布拉斯加州',
 'NH': '新罕布什尔州',
 'NJ': '新泽西州',
 'NM': '新墨西哥州',
 'NOT PROVIDED': 'NOT PROVIDED',
 'NV': '内华达州',
 'NY': '纽约州',
 'OH': '俄亥俄州',
 'OK': 'OK',
 'OR': '俄勒冈州',
 'PA': '宾夕法尼亚州',
 'PR': 'PR',
 'PW': 'PW',
 'RI': '罗得岛州',
 'SC': '南卡罗来纳州',
 'SD': '南达科他州',
 'TN': '田纳西州',
 'TX': '得克萨斯州',
 'UT': '犹他州',
 'VA': '弗吉尼亚州',
 'VI': 'VI',
 'VT': '佛蒙特州',
 'WA': '华盛顿州',
 'WI': '威斯康辛州',
 'WV': '西弗吉尼亚州',
 'WY': '怀俄明州',
 'ZZ': 'ZZ'}
# 将集合加入到节点列表,nodes需要把桑基图中出现的名称全部设置进去,并且要保证links中的名称与name相同
nodes = []
for n in node1:
    nodes.append({'name': scp[n]})
for n in node2:
    nodes.append({'name': n})
# 做分组聚合
cgs = c_itcont5.groupby(['STATE','CAND_PTY_AFFILIATION']).sum()
# 将聚合结果加入到链接列表, links代表节点关系,source表示起点,target表示终点,需要将节点关系全部输入进去,value表示节点长度
links = []
for row in cgs.iterrows():
    links.append({'source': scp[row[0][0]], 'target': row[0][1], 'value': int(row[1][0])})
from pyecharts import options as opts
from pyecharts.charts import Page, Sankey
sankey = Sankey(init_opts=opts.InitOpts(width="1024", height="768"))        #可以设置大小和图标名称
sankey.add(
    '各州捐款额流向图',                #名称
    nodes,                    #输入节点,如果导入json数据,nodes=json['nodes]
    links,                    #输入关系,nodes=json['links']
    linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.5, color="source", width=10),
    label_opts=opts.LabelOpts(position="right", is_show=True, color='red'),
    node_gap=1
)
sankey.render()
# 生成的桑基图可通过下方目录查看

sankey.gif

'/data/nas/workspace/jupyter/download/render.html'


结论

由各州全款额流向图可以非常快速的得知:加利福尼亚州,纽约州,马萨诸塞州在7月22日至8月20日是对民主党贡献最多的三大州。

佛罗里达州和德克萨斯州对两大党的贡献几乎相同,但更倾向于共和党,也是对共和党贡献较大的两个州。

桑基图会包含很多数据元素,通过桑基图可以探索更多的数据,例如去除两大党的情况和仅比较两大党的情况等等。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
54 4
|
1月前
|
SQL 消息中间件 分布式计算
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
63 5
|
2天前
|
存储 监控 数据挖掘
【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器
ClickHouse 的物化视图是一种特殊表,通过预先计算并存储查询结果,显著提高查询性能,减少资源消耗,适用于实时报表、日志分析、用户行为分析、金融数据分析和物联网数据分析等场景。物化视图的创建、数据插入、更新和一致性保证通过事务机制实现。
26 14
|
2天前
|
数据可视化 Python
Pandas 相关性分析
Pandas 相关性分析
8 1
|
8天前
|
数据采集 机器学习/深度学习 搜索推荐
大数据与社交媒体:用户行为分析
【10月更文挑战第31天】在数字化时代,社交媒体成为人们生活的重要部分,大数据技术的发展使其用户行为分析成为企业理解用户需求、优化产品设计和提升用户体验的关键手段。本文探讨了大数据在社交媒体用户行为分析中的应用,包括用户画像构建、情感分析、行为路径分析和社交网络分析,以及面临的挑战与机遇。
|
7天前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
34 1
|
8天前
|
机器学习/深度学习 搜索推荐 大数据
大数据与教育:学生表现分析的工具
【10月更文挑战第31天】在数字化时代,大数据成为改善教育质量的重要工具。本文探讨了大数据在学生表现分析中的应用,介绍学习管理系统、智能评估系统、情感分析技术和学习路径优化等工具,帮助教育者更好地理解学生需求,制定个性化教学策略,提升教学效果。尽管面临数据隐私等挑战,大数据仍为教育创新带来巨大机遇。
|
11天前
|
人工智能 供应链 搜索推荐
大数据分析:解锁商业智能的秘密武器
【10月更文挑战第31天】在信息爆炸时代,大数据分析成为企业解锁商业智能的关键工具。本文探讨了大数据分析在客户洞察、风险管理、供应链优化、产品开发和决策支持等方面的应用,强调了明确分析目标、选择合适工具、培养专业人才和持续优化的重要性,并展望了未来的发展趋势。
|
1天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
27天前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
41 1
下一篇
无影云桌面