数据分析项目实战day2
目录
1.人口数据分析
1.导入并查看相关文件信息
2.进行数据操作
2.政治献金数据分析
1.读取数据查看相关信息
2.进行数据操作
3.用户消费数据分析
1.数据预处理
2.按月进行分析
3.用户个体消费分析
1.人口数据分析
1.导入并查看相关文件信息
state表示州的全称,abbreviation表示缩写。
state表示州 areas表示所占面积。
state表示州,age表示调查人口的年龄,year表示统计年份,population表示人口数量。
2.进行数据操作
将人口数据和各州简称数据合并。
上图中有两列缩写,删除其中一列。
将state空值对应的简称找到
对简称进行去重
给为空的state补上正确的值,从而去除nan。
利用之前判别是否存在nan检测操作是否成功。
将面积数据进行合并
删除面积为nan对应的行。
找出2010年全部年龄人口数据
计算各州人口密度,排序并找出人口密度最高
完整代码如下:
import numpy as np
import pandas as pd
from pandas.core.indexes.base import Indexabb=pd.read_csv("state-abbrevs.csv")#state表示州全称 abbreviation表示缩写
#print(abb)
area=pd.read_csv("state-areas.csv")#state表示州 areas表示所占面积
#print(area)
pop=pd.read_csv("state-population.csv")#state表示州,age表示调查人口的年龄,year表示统计年份,population表示人口数量。
#print(pop)
#将人口数据和各州简称数据合并
abb_pop=pd.merge(abb,pop,left_on='abbreviation',right_on='state/region',how='outer')
# print(abb_pop.head(5))
abb_pop.drop(labels="abbreviation",axis=1,inplace=True)
# print(abb_pop.head(5))# #定位state中nan
# abb_pop_nan=abb_pop.loc[abb_pop['state'].isnull()]
# abb_pop_statenan=abb_pop_nan['state/region']
# #print(abb_pop_statenan)
# abb_pop_statenan=abb_pop_statenan.unique()
# # print(abb_pop_statenan)#为空值补上正确的值
#取出USA对应行数据
USA_nan=abb_pop.loc[abb_pop['state/region']=='USA']
PR_nan=abb_pop.loc[abb_pop['state/region']=='PR']
Indexs1=USA_nan.index
Indexs2=PR_nan.index
# print(USA_nan)
#获取USA为空对应的行索引并完成赋值
abb_pop.loc[Indexs1,'state']='United States'
abb_pop.loc[Indexs2,'state']='Paraná'
# print(abb_pop)#检测填充nan是否成功
abb_pop_nan=abb_pop.loc[abb_pop['state'].isnull()]
abb_pop_statenan=abb_pop_nan['state/region']
# print(abb_pop_statenan)
abb_pop_statenan=abb_pop_statenan.unique()
# print(abb_pop_statenan)#再将面积数据进行合并
abb_pop_area=pd.merge(abb_pop,area,how='outer')
# print(abb_pop_area)
#去除面积中含有nan的行
area_nan=abb_pop_area.loc[abb_pop_area['area (sq. mi)'].isnull()]
Indexs3=area_nan.index
abb_pop_area.drop(labels=Indexs3,axis=0,inplace=True)
# print(abb_pop_area)#找出2010年全民数据
total_date_2010=abb_pop_area[abb_pop_area['ages']=='total']
total_date_2010=total_date_2010[total_date_2010['year']==2010]
# print(total_date_2010)#计算各州人口密度 排序并找出人口密度最高
abb_pop_area['density']=abb_pop_area['population']/abb_pop_area['area (sq. mi)']
# print(abb_pop_area)
abb_pop_area=abb_pop_area.sort_values(by='density',axis=0,ascending=False)
print(abb_pop_area.head(1))
2.政治献金数据分析
1.读取数据查看相关信息
2.进行数据操作
将所有空值填充为NOT PROVIDE。
将捐赠金额小于等于0的数据删除。
新建一列显示候选人所对应的党派。
统计不同党派出现的次数
统计各个党派收到的献金总数
查看具体每天的献金总数
查看老兵主要支持谁
完整代码如下
import numpy as np
import pandas as pdparties = {'Bachmann, Michelle': 'Republican','Cain, Herman': 'Republican','Gingrich, Newt': 'Republican','Huntsman, Jon': 'Republican','Johnson, Gary Earl': 'Republican','McCotter, Thaddeus G': 'Republican','Obama, Barack': 'Democrat','Paul, Ron': 'Republican','Pawlenty, Timothy': 'Republican','Perry, Rick': 'Republican',"Roemer, Charles E. 'Buddy' III": 'Republican','Romney, Mitt': 'Republican','Santorum, Rick': 'Republican'}df=pd.read_csv("usa_election.txt")
# print(df.head(5))
# print(df.info())
# print(df.describe())#将所有空值填充为NOT PROVIDE
df.fillna(value='NOT PROVIDE',inplace=True)
# print(df)
#将捐赠金额小于等于0的数据删除
indexs1=df.loc[df['contb_receipt_amt']<=0].index
df.drop(labels=indexs1,axis=0,inplace=True)
# print(df)#新建一列显示候选人所对应的党派
df['party']=df['cand_nm'].map(parties)
# print(df)
# print(df['party'].value_counts())#统计各个党派收到的献金总数
party_sum=df.groupby(by='party')['contb_receipt_amt'].sum()
# print(party_sum)
party_sum_day=df.groupby(by=['party','contb_receipt_dt'])['contb_receipt_amt'].sum()
# print(party_sum_day)df_old=df.loc[df['contbr_occupation']=='DISABLED VETERAN']
#根据候选人分组 再求和排序
df_old_donate=df_old.groupby(by='cand_nm')['contb_receipt_amt'].sum()
print(df_old_donate.head(1))
3.用户消费数据分析
1.数据预处理
发现数据的列索引存在问题,进行修改。
查看数据信息,发现没有空值。
将购买日期转换为时间类型。
在数据新增月份列。
2.按月进行分析
求出每月用户花费的总金额。因为数据跨越了两年,所以不进行刚才的月份合并操作。
绘制折线图。
查看用户每月用户产品购买量。
3.用户个体消费分析
求出每一个用户花费金额。
统计每一个用户消费次数。
绘制散点图。
绘制每个用户消费总金额直方图 金额在1200内 。
完整代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt #用以正常显示中文
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号#修改列索引,name中从左到右依次为用户ID 购买日期 购买数量 购买金额
df=pd.read_csv('CDNOW_master.txt',header=None,sep='\s+',names=['user_id','order_date','order_num','order_amount'])
#print(df)
# print(df.info())#转换时间格式
df['order_date']=pd.to_datetime(df['order_date'],format='%Y%m%d')#在数据新增月份列
df['month']=df['order_date'].astype('datetime64[M]')
# df['month']=[i.month for i in df["month"]]#统计每个月花费 和购买产品
df_monthly_cost=df.groupby(by='month')['order_amount'].sum()
df_monthly_buy_num=df.groupby(by='month')['order_num'].sum()
# print(df_monthly_cost)
# print(df_monthly_buy_num)#作图
# plt.figure(figsize=(20,8),dpi=80)
# plt.plot(df_monthly_cost,label='每月花费金额')
# plt.plot(df_monthly_buy_num,label='每月购买产品数')
# plt.legend(loc='best')
# plt.show()#基于用户进行分组
#求每一个用户消费总金额
df_per_user_amount=df.groupby(by='user_id')['order_amount'].sum()
#求每一个用户消费总次数
df_per_user_num=df.groupby(by='user_id').count()['order_num']# print(df_per_user_num)
# plt.figure(figsize=(20,8),dpi=80)
# plt.scatter(df_per_user_num,df_per_user_amount)
# plt.xlabel('购买次数')
# plt.ylabel('购买金额')
# plt.show()#绘制每个用户消费总金额直方图 金额在1200内
# df_per_user_amount_1=df.groupby(by='user_id').sum().query('order_amount<=1200')["order_amount"]
# print(df_per_user_amount_1)
# plt.figure(figsize=(20,8),dpi=80)
# plt.hist(df_per_user_amount_1)
# plt.xlabel('消费金额')
# plt.ylabel('用户数量')
# plt.show()
数据分析项目实战day2相关推荐
- 【数据分析项目实战】Python爬取BOSS直聘岗位和数据分析
说明:这是一个数据分析项目全流程(附带项目实例),本篇教程来源于网络,胖哥对此进行了完整的梳理,并把用到的数据+代码完全奉上.如需数据+完整代码可以直接到文章最后获取. 这里面的数据,我只爬取了部分, ...
- 福布斯系列之数据采集 | Python数据分析项目实战
1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据 ...
- 【项目实战】Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 在衍生产品定价和风险管理中,对当前波动率是很感兴趣的,这是因为需 ...
- 数据分析项目实战项目一:CPC广告优化以及bilibili订单分析(下)
第一章:电商平台数据分析思路与bilibili会员购介绍 1.1互联网电商平台数据分析的一般思路 互联网电商平台数据分析的一般思路一般分为以下三步:找出问题,分析问题,解决问题.其中,找出问题包括描述 ...
- 数据分析项目实战day1
目录 针对股票数据的项目分析实战 1.数据预处理 2.调用to_dsv方法把数据保存到本地 3.删除unnamed列 4.找出所有收盘比开盘上涨超过3%的日期 5. 找出所有收盘比开盘 ...
- 福布斯系列之数据分析思路篇 | Python数据分析项目实战
福布斯每年都会发布福布斯全球上市企业2000强排行榜(Forbes Global 2000),这个排行榜每年发布的时候,国内外总有新闻会热闹的讨论一番,但很少见到比较全面的分析. 因此才有了这样一个想 ...
- 最新高清仿驴妈妈旅行网大数据分析项目实战
目录 第1章 大数据基本技能储备 1.1.项目介绍.mp4 1.2.hadoop介绍.mp4 1.3.SSH免密码登录.mp4 1.4.JAVA安装.mp4 1.5.Hadoop安装及验证.mp4 1 ...
- 数据分析项目实战项目二:入驻商用户画像体系
第一章:电商平台入驻商数据分析思路与亚马逊相关信息介绍 1.1 互联网电商平台入驻商数据分析的一般思路 互联网电商平台入驻商数据分析的一般思路一般分为以下三步:获得数据,分析业务需求,产生数据成果.其 ...
- 银行贷款客户拉新活动分析——数据分析项目实战
1.案例背景 Thera Bank是一家拥有不断增长客户群的银行.这银行中大多数客户的存款规模都是不一样的.由于贷款业务的客户数量很少,所以银行希望有效地将存款用户转化为贷款用户以此扩大贷款业务量的基 ...
最新文章
- TCP/IP 协议栈4层结构及3次握手4次挥手
- 机器学习数据预处理之缺失值:插值法填充+ lagrange插值+拉格朗日插值
- C 语言编程 — 使用 assert 断言进行程序设计
- 基于深度学习的CTR模型DeepCTR 更新啦!
- 初识ES-es与mysql的概念对比
- python postmessage 鼠标_SilkTest高级进阶系列7-用PostMessage模拟鼠标
- 1.SCRT怎么连接Ensp里面的设备???
- rtl8201以太网卡调试
- win10小娜助手无法搜索本地应用怎么办
- Causality Inspired Representation Learning for Domain Generalization 阅读笔记
- “PHP语言,是全世界最好用的编程语言!“
- React(Js)学习
- Linux下查看内存泄露的命令
- ideaVim 使用总结
- C语言上学期整理(第3章)
- kettle Excel模板
- 阿里独家揭秘:淘宝全站HTTPS 改造细节
- 《工程学导论》读书笔记第二章工程与科学
- 简要介绍Eclipse
- 不同浏览器下word-wrap和word-break强制换行
热门文章
- IP地址的ABCDE类划分
- srvctl命令详解
- 函数声明时 要不要 加 extern
- go os.Args 学习
- 记录主机无故蓝屏死机、卡顿的排查过程,结果居然是它!
- 浏览器中引入百度地图,并带有导航功能
- Keil 5 编译报错FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘
- hive-diea-ETL数据截取split,嵌套SQL查询,ETL-SQL表查询中间件解析
- java retry_Spring异常重试框架Spring Retry详解
- 解决MongoDB问题:Due to limitations of the com.mongodb.BasicDocument, you cant add a second null criter