pandas分析各国家交易情况

数据集来源: https://archive.ics.uci.edu/ml/datasets/Online%20Retail 

#coding:utf-8import pandas as pd
import os
import seaborn as sns
import matplotlib.pyplot as pltRAW_DATA_FILE = './data/online_retail.xlsx'
CLN_DATA_FILE = './output/cln_online_retail.csv'def inspect_data(data_df):"""查看数据集信息参数:- data_df:  DataFrame数据"""print('数据集基本信息')print(data_df.info())print('\n数据集统计信息')print(data_df.describe())print('\n数据集预览')print(data_df.head())def clean_data(data_df):"""数据清洗,包括去除空记录,去除重复记录参数:- data_df:  DataFrame数据返回:- cln_data_df:  清洗后的数据"""# 去除空记录后的数据non_empty_data_df = data_df.dropna()n_empty = data_df.shape[0] - non_empty_data_df.shape[0]# 去重后的记录cln_data_df = non_empty_data_df.drop_duplicates()n_duplicates = data_df.shape[0] - cln_data_df.shape[0]print('原始数据共有{}条记录,清洗后的数据共有{}条有效记录。(其中空记录有{}条,重复记录有{}条。)'.format(data_df.shape[0], cln_data_df.shape[0], n_empty, n_duplicates))# 保存清洗结果cln_data_df.to_csv(CLN_DATA_FILE, index=False, encoding='utf-8')return cln_data_dfdef show_customer_stats(data_df):"""比较各国家的客户数参数:- data_df:  DataFrame数据"""customer_per_country = data_df.drop_duplicates(['CustomerID'])['Country'].value_counts()# 由于'United Kingdom'数据过多,所以这里只考虑其他国家customer_per_country_df = \customer_per_country[customer_per_country.index != 'United Kingdom'].to_frame().T# 可视化结果sns.barplot(data=customer_per_country_df)#xlabel的名字旋转90度plt.xticks(rotation=90)plt.xlabel('Country')plt.ylabel('#Customers')#布局紧凑plt.tight_layout()plt.savefig('./output/customer_per_country.png')plt.show()def show_total_cost_stats(data_df):"""比较各国家的成交额参数:- data_df:  DataFrame数据"""# 过滤掉"取消"的交易记录,以及'United Kingdom'的数据cond1 = ~data_df['InvoiceNo'].str.startswith('C')cond2 = data_df['Country'] != 'United Kingdom'valid_data_df = data_df[cond1 & cond2].copy()valid_data_df['TotalCost'] = valid_data_df['UnitPrice'] * valid_data_df['Quantity']cost_per_country = valid_data_df.groupby('Country')['TotalCost'].sum()# 可视化结果cost_per_country.sort_values(ascending=False).plot(kind='bar')plt.ylabel('Total Cost')plt.tight_layout()plt.savefig('./output/cost_per_country.png')plt.show()def show_trend_by_country(data_df):"""统计各国家交易记录的趋势参数:- data_df:  DataFrame数据"""countries = ['Germany', 'France', 'Spain', 'Belgium', 'Switzerland']data_df = data_df[data_df['Country'].isin(countries)].copy()data_df['InvoiceDate'] = pd.to_datetime(data_df['InvoiceDate'])data_df['InvoiceYear'] = data_df['InvoiceDate'].dt.year.astype(str)data_df['InvoiceMonth'] = data_df['InvoiceDate'].dt.month.astype(str)#年份拼上月份用横线隔开data_df['InvoiceYearMonth'] = data_df['InvoiceYear'].str.cat(data_df['InvoiceMonth'], sep='-')month_country_count = data_df.groupby(['InvoiceYearMonth', 'Country'])['StockCode'].count()print(month_country_count.head())#打散month_country_count_df = month_country_count.unstack()print(month_country_count_df.head())#横轴截至到月份month_country_count_df.index = pd.to_datetime(month_country_count_df.index).to_period('M')print(month_country_count_df.head())month_country_count_df.sort_index(inplace=True)# 可视化结果# 堆叠柱状图month_country_count_df.plot(kind='bar', stacked=True, rot=45)plt.xlabel('Month')plt.ylabel('#Transaction')plt.tight_layout()plt.savefig('./output/country_trend_stacked_bar.png')plt.show()## 热图sns.heatmap(month_country_count_df.T)plt.xlabel('Month')plt.xticks(rotation=90)plt.yticks(rotation=0)plt.tight_layout()plt.savefig('./output/country_trend_heatmap.png')plt.show()def main():"""主函数"""if not os.path.exists(CLN_DATA_FILE):# 如果不存在清洗后的数据集,进行数据清洗raw_data_df = pd.read_excel(RAW_DATA_FILE, dtype={'InvoiceNo': str,'StockCode': str,'CustomerID': str})# 查看数据集信息inspect_data(raw_data_df)# 数据清洗cln_data_df = clean_data(raw_data_df)else:print('读取已清洗的数据')cln_data_df = pd.read_csv(CLN_DATA_FILE)# 数据分析# 1. 比较各国家的客户数show_customer_stats(cln_data_df)# 2. 比较各国家的成交额show_total_cost_stats(cln_data_df)# 3. 统计各国家交易记录的趋势show_trend_by_country(cln_data_df)if __name__ == '__main__':main()

各国家的客户数

各国家的成交额

各国家交易记录的趋势

堆叠柱状图

热力图

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gartner 2019基础设施和运维十大趋势:Serverless、边缘计算、SaaS 变复杂等

来源:机器之心Gartner公司强调了基础设施和运维(I&O)领导者在2019年必须开始准备迎接的几大技术和趋势,以便支持数字化基础设施。Gartner的分析师们在Gartner IT基础设施、运维和云战略大会上介绍了研究结果。Gartner的高级研究主任罗斯•温瑟(Ross …

天池入门赛--蒸汽预测

首先查看数据 #coding:utf-8 """ Created on Wen Jan 9 2019author: fzh """ import warnings warnings.filterwarnings("ignore") import matplotlib.pyplot as plt plt.rcParams.update({figure.max_open_warning: 0}) import sea…

脑科学与AI要想融合发展,目前来说仍很困难

来源:人机与认知实验室摘要:AI要想进一步发展,需要从脑科学得到启发。业界普遍认为,AI未来的演进方向就是计算智能、感知智能和认知智能,在此期间,真正需要突破的就是让计算机理解、思考和进行自我学习&…

张首晟生前重磅演讲:要用第一性原理的思维方式来理解今天的世界

来源:经济学家圈摘要:本文为华裔科学家张首晟今年3月25日在IT领袖峰会上的演讲以下是张首晟教授演讲全文:谢谢大家的关注,在下午来听我的分享,今天大会是IT领袖峰会,所以我想讲的三个题目是「量子计算」、「…

Windows live writer插入代码图片Test

/*** 验证字符串text是不是ip地址,是返回true,否则返回false* param text* return*/ public static boolean isIPAddress(String text){StringBuilder regex new StringBuilder("^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."); regex.a…

knn用于水果数据集分类

数据集地址:https://download.csdn.net/download/fanzonghao/10940440 knn算法流程: 若k取无穷大,那么测试数据就取决于每一类的占比,归属于占比最大的那一类。 首先观察数据集,利用mass,height&#xff…

人脸识别技术大起底,你了解多少?

来源:与非网这两年,随着科技的迅速发展,人脸识别已经逐渐成为了新时期生物识别技术应用的重要领域,忘记密码了?没事儿,咱还可以“刷脸”!今天,小编将带大家了解一下最新的人脸识别技术,看看这项…

深度学习时出现的一些安装问题+ubuntu apt的一些问题+github release文件加速

一.python用于深度学习时出现的一些安装问题 问题:raise ImportError, str(msg) , please install the python-tk package 解决:apt-get update apt-get install python-tk 问题:pip install pycocotools出现错误 pip instal…

Struts+Tomcat搭建

StrutsTomcat搭建tomcat使用(服务器端开发): 如果要安装Tomcat需要进行的配置:tomcat安装在c: \Tomcat CATALINA_HOME变量值设为: H:\Program Files (x86)\tomcat\apache-tomcat-7.0.27 CATALINA_BASE变量值设为: H:\Program Files (x86)\tomcat\apache-tomcat-…

AlphaZero登上《科学》封面:一个算法“通杀”三大棋,完整论文首次发布

来源:量子位作者:乾明 一璞 栗子 晓查不仅会下围棋,还自学成才横扫国际象棋和日本将棋的DeepMind AlphaZero,登上了最新一期《科学》杂志封面。同时,这也是经过完整同行审议的AlphaZero论文,首次公开发表。…

自编码器及相关变种算法简介

本文对自编码器(Auto-Encoder)算法及其相关变种算法进行简要介绍,其中包括 Regularized Auto-Encoder、Sparse Auto-Encoder、Denoising Auto-Encoder 和 Contractive Auto-Encoder,重点讨论各算法的基本思想及优化时所需目标函数…

pytorch数据预处理

一,数据加载 数据路径: #coding:utf-8 import torch as t from torch.utils import data import os from PIL import Image import numpy as npclass DogCat(data.Dataset):def __init__(self, path):imgs os.listdir(path)# 所有图片的绝对路径# 这里…

太阳系“首个星际访客”未被探测到人工信号

来源:新华网去年发现的雪茄形天体被认为是太阳系“首个星际访客”,其真实身份一直受到全球天文学家高度关注。美国搜索外星文明研究所(SETI)最新研究称,这个天体没有被探测出“人工”的无线电信号,但这不能…

协方差理解,PCA以及奇异值分解(SVD)

一.PCA PCA通过正交变换将一组由线性相关变量表示的数据转换为少数几个由线性无关变量表示的数据,这几个线性无关的变量就是主成分。PCA通过将高维数据维度减少到少数几个维度,本质上属于一种数据降维方法,也可以用来探索数据的内在结构。 …

ASP.NET MVC获取上传的路径

刚才有网友问及&#xff0c;怎样获取<input typefile>的值&#xff1f; Insus.NET测试了一下&#xff0c;在Inetnet Explor之下似乎没有问题&#xff0c;但是FireFox获取到的只是文件名。 在MVC的控制器中&#xff0c;创建一个视图Action&#xff0c;超简单如下&#xff…

python的继承与多态

一.继承 class Person(object):def __init__(self, name, sex):self.name nameself.sex sexdef print_title(self):if self.sex "male":print("man")elif self.sex "female":print("woman")class Child(Person): # Child 继承 …

如何在算法交易中使用AI?摩根大通发布新版指南

来源 &#xff1a;efinancialcareers.com作者 &#xff1a;Sarah Butcher编译&#xff1a;机器之能 张玺摘要&#xff1a;如果你对银行与金融领域的 AI 应用有兴趣的话&#xff0c;你肯定了解 JPM&#xff08;摩根大通&#xff09;最近十年对大数据和人工智能的出色运用&#x…

生命简史

来源「新原理研究所」&#xff08;ID&#xff1a;newprincipia&#xff09;摘要&#xff1a;地球上的生命是如何开始的&#xff1f;未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&…

Array()数组

数组的定义 var arr [1, 2, 3, 4, "one", "two", "three", "four"]; //一维数组 var props [["拳头", "刀", "枪"], ["boxing", "knife ", "gun"]]; //二维数组 调用 …

成立 5 周年:一文览尽 Facebook 人工智能研究院历年重要成果

来源&#xff1a;AI科技评论五年前&#xff0c;Yann LeCun 等人创建了 Facebook 人工智能研究院 (Facebook AI Research&#xff0c;FAIR)&#xff0c;试图通过开放的研究环境促进人工智能的发展&#xff0c;进而造福所有人——他们努力的目的是为了理解智慧的本质&#xff0c;…