Python数据分析:从0完成一个数据分析实战(2)

学习目标:

从0-1的数据分析实战

学习内容:

1、 数据分析

2、 数据汇总

学习产出:

1.1.数据可视化
# 导入matplotlib中的pyplot
import matplotlib.pyplot as plt
# 为了使matplotlib图形能够内联显示
%matplotlib inline
# 导入词云库
from wordcloud import WordCloud,ImageColorGenerator

#按州总捐款数和总捐款人数柱状图
# 各州总捐款数可视化
st_amt = c_itcont.groupby('STATE').sum().sort_values("TRANSACTION_AMT",ascending=False)[:10]
st_amt=pd.DataFrame(st_amt, columns=['TRANSACTION_AMT'])
st_amt.plot(kind='bar')

在这里插入图片描述

# 各州捐款总人数可视化,取前10个州的数据
st_amt = c_itcont.groupby('STATE').size().sort_values(ascending=False).head(10)
st_amt.plot(kind='bar')

在这里插入图片描述

# 从所有数据中取出支持拜登的数据
biden = c_itcont[c_itcont['CAND_NAME']=='BIDEN, JOSEPH R JR']
# 统计各州对拜登的捐款总数
biden_state = biden.groupby('STATE').sum().sort_values("TRANSACTION_AMT", ascending=False).head(10)
# 饼图可视化各州捐款数据占比
biden_state.plot.pie(figsize=(10, 10),autopct='%0.2f%%',subplots=True)

在这里插入图片描述

# 首先下载图片模型,这里提供的是已经处理好的图片,有兴趣的选手可以自己写代码进行图片处理
# 处理结果:需要将人图像和背景颜色分离,并纯色填充,词云才会只显示在人图像区域
# 拜登原图:https://img.alicdn.com/tfs/TB1pUcwmZVl614jSZKPXXaGjpXa-689-390.jpg
# 拜登处理后图片:https://img.alicdn.com/tfs/TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg
# 特朗普原图:https://img.alicdn.com/tfs/TB1D0l4pBBh1e4jSZFhXXcC9VXa-298-169.jpg
# 特朗普处理后图片:https://img.alicdn.com/tfs/TB1BoowmZVl614jSZKPXXaGjpXa-298-169.jpg
# 这里我们先下载处理后的图片
!wget https://img.alicdn.com/tfs/TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg
# 由于下载图片文件名过长,我们对文件名进行重命名
import os
os.rename('TB10Jx4pBBh1e4jSZFhXXcC9VXa-689-390.jpg', 'biden.jpg')

# 在4.2 热门候选人拜登在各州的获得的捐赠占比 中我们已经取出了所有支持拜登的人的数据,存在变量:biden中
# 将所有捐赠者姓名连接成一个字符串
data = ' '.join(biden["NAME"].tolist())
# 读取图片文件
bg = plt.imread("biden.jpg")
# 生成
wc = WordCloud(# FFFAE3
    background_color="white",  # 设置背景为白色,默认为黑色
    width=890,  # 设置图片的宽度
    height=600,  # 设置图片的高度
    mask=bg,    # 画布
    margin=10,  # 设置图片的边缘
    max_font_size=100,  # 显示的最大的字体大小
    random_state=20,  # 为每个单词返回一个PIL颜色
).generate_from_text(data)
# 图片背景
bg_color = ImageColorGenerator(bg)
# 开始画图
plt.imshow(wc.recolor(color_func=bg_color))
# 为云图去掉坐标轴
plt.axis("off")
# 画云图,显示
# 保存云图
wc.to_file("biden_wordcloud.png")

# 按州总捐款热力地图
import seaborn as sns
st_amt2 = c_itcont.groupby('STATE').sum().sort_values("TRANSACTION_AMT",ascending=False)[:10]
st_amt2 = pd.DataFrame(st_amt, columns=['TRANSACTION_AMT'])
sns.heatmap(st_amt2, cmap='Blues', annot=True, fmt='.0f')

在这里插入图片描述

# 收到捐赠额最多的两位候选人的总捐赠额变化趋势
'''
参赛选手自由发挥、补充
第一个补充捐赠额变化趋势图的参赛选手可以获得天池杯子一个
'''
first = c_itcont.groupby("CAND_NAME").sum().sort_values("TRANSACTION_AMT",ascending=False).index[0]
second = c_itcont.groupby("CAND_NAME").sum().sort_values("TRANSACTION_AMT",ascending=False).index[1]
x = list(c_itcont[c_itcont['CAND_NAME'] == first].groupby("TRANSACTION_DT")['TRANSACTION_AMT'].sum().index)
y1 = list(c_itcont[c_itcont['CAND_NAME'] == first].groupby("TRANSACTION_DT")['TRANSACTION_AMT'].sum())
y2 = list(c_itcont[c_itcont['CAND_NAME'] == second].groupby("TRANSACTION_DT")['TRANSACTION_AMT'].sum())
fig = plt.figure(figsize=(15, 8), dpi=80)
plt.xticks(rotation=40)
plt.xlabel('date')
plt.ylabel('money')
plt.plot(x, y1, label=first, color='red')
plt.plot(x, y2, label=second, color='blue')
plt.legend(loc='upper left')
plt.grid(alpha=0.2)
plt.title('Recruitment of two major candidates')

在这里插入图片描述

# 其他可视化方向

#得到捐资额最高的两位候选人biden和trump的捐资额趋势图
trump=c_itcont[c_itcont['CAND_NAME']=='TRUMP, DONALD J.']
biden_amt=biden.groupby('TRANSACTION_DT').sum().sort_values('TRANSACTION_DT',ascending=True)
trump_amt=trump.groupby('TRANSACTION_DT').sum().sort_values('TRANSACTION_DT',ascending=True)
fig,ax=plt.subplots(figsize=(15,6))

ax.plot(biden_amt,drawstyle='steps-post',label="Biden")
ax.plot(trump_amt,drawstyle='steps-post',label="Trump")

plt.title("AMT Tendency Chart")
plt.xlabel('Date')
plt.ylabel('AMT')
plt.xticks(rotation=30)
plt.tick_params(axis='x', labelsize=10)
plt.legend(loc='upper left',frameon=False)
plt.grid(alpha=0.2)
plt.show()

在这里插入图片描述
数据及代码源于"AI训练营Python-阿里云天池及其它参赛人员代码"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值