搜索
人大经济论坛 标签 EXCEL 相关日志

tag 标签: EXCEL经管大学堂:名校名师名课

相关日志

分享 数据科学工作流程
stzhao 2017-5-12 23:08
数据科学工作流程 数据导入 数据整理 反复理解数据 数据可视化 数据转换 统计建模 作出推断(比如预测) 沟通交流 自动化分析 程序开发 下面列出每个步骤最有用的一些R包: 数据导入 以下R包主要用于数据导入和保存数据 feather:一种快速,轻量级的文件格式。在R和python上都可使用 readr:实现表格数据的快速导入。中文介绍可参考这里 readxl:读取Microsoft Excel电子表格数据 openxlsx:读取Microsoft Excel电子表格数据 googlesheets:读取google电子表格数据 haven:读取SAS,SPSS和Stata统计软件格式的数据 httr:从网站开放的API中读取数据 rvest:网页数据抓取包 xml2:读取HTML和XML格式数据 webreadr:读取常见的Web日志格式数据 DBI:数据库管理系统通用接口包 RMySQL:用于连接MySQL数据库的R包 RPostgres:用于连接PostgreSQL数据库的R包 bigrquery用于连接Google BigQuery的R包 PivotalR:用于读取Pivitol(Greenplum)和HAWQ数据库中的数据 dplyr:提供了一个访问常见数据库的接口 data.table:data.table包的fread()函数可以快速读取大数据集 git2r:用于访问git仓库 数据整理 以下R包主要用于数据整理,以便于你后续建模分析: tidyr:用于整理表格数据的布局 dplyr:用于将多个数据表连接成一个整齐的数据集 purrr:函数式编程工具,在做数据整理时非常有用。 broom:用于将统计模型的结果整理成数据框形式 zoo:定义了一个名zoo的S3类型对象,用于描述规则的和不规则的有序的时间序列数据。 数据可视化 以下R包用于数据可视化: ggplot2及其扩展:ggplot2包提供了一个强大的绘图系统,并实现了以下扩展 ggthemes:提供扩展的图形风格主题 ggmap:提供Google Maps,Open Street Maps等流行的在线地图服务模块 ggiraph:绘制交互式的ggplot图形 ggstance:实现常见图形的横向版本 GGally:绘制散点图矩阵 ggalt:添加额外的坐标轴,geoms等 ggforce:添加额外geoms等 ggrepel:用于避免图形标签重叠 ggraph:用于绘制网络状、树状等特定形状的图形 ggpmisc:光生物学相关扩展 geomnet:绘制网络状图形 ggExtra:绘制图形的边界直方图 gganimate:绘制动画图 plotROC:绘制交互式ROC曲线图 ggspectra:绘制光谱图 ggnetwork:网络状图形的geoms ggradar:绘制雷达图 ggTimeSeries:时间序列数据可视化 ggtree:树图可视化 ggseas:季节调整工具 lattice:生成栅栏图 rgl:交互式3D绘图 ggvis:交互式图表多功能系统 htmlwidgets:一个专为R语言打造的可视化JS库 leaflet:绘制交互式地图 dygraphs:绘制交互式时间序列图 plotly:交互式绘图包,中文介绍详见这里 rbokeh:用于创建交互式图表和地图,中文介绍 Highcharter:绘制交互式Highcharts图 visNetwork:绘制交互式网状图 networkD3:绘制交互式网状图 d3heatmap:绘制交互式热力图,中文介绍 DT:用于创建交互式表格 threejs:绘制交互式3d图形和地球仪 -rglwidget:绘制交互式3d图形 DiagrammeR:绘制交互式图表 MetricsGraphics:绘制交互式MetricsGraphics图 rCharts:提供了对多个javascript数据可视化库(highcharts/nvd3/polychart)的R封装。 coefplot:可视化统计模型结果 quantmod:可视化金融图表 colorspace:基于HSL的调色板 viridis:Matplotlib viridis调色板 munsell:Munsell调色板 RColorBrewer:图形调色板 igraph:用于网络分析和可视化 latticeExtra:lattice绘图系统扩展包 sp:空间数据工具 数据转换 以下R包用于将数据转换为新的数据类型 dplyr:一个用于高效数据清理的R包。视频学习课程 magrittr:一个高效的管道操作工具包。 tibble:高效的显示表格数据的结构 stringr:一个字符串处理工具集 lubridate:用于处理日期时间数据 xts:xts是对时间序列数据(zoo)的一种扩展实现,提供了时间序列的操作接口。 data.table:用于快速处理大数据集 vtreat:一个对预测模型进行变量预处理的工具 stringi:一个快速字符串处理工具 Matrix:著名的稀疏矩阵包 统计建模与推断 下述R包是统计建模最常用的几个R包,其中的一些R包适用于多个主题。 car:提供了大量的增强版的拟合和评价回归模型的函数。 Hmisc:提供各种用于数据分析的函数 multcomp:参数模型中的常见线性假设的同时检验和置信区间计算,包括线性、广义线性、线性混合效应和生存模型。 pbkrtest用于线性混合效应模型的参数Bootstrap检验 MatrixModels:用于稠密矩阵和稀疏矩阵建模 mvtnorm:用于计算多元正态分布和t分布的概率,分位数,随机偏差等 SparseM:用于稀疏矩阵的基本线性代数运算 lme4:利用C++矩阵库 Eigen进行线性混合效应模型的计算。 broom:将统计模型结果整理成数据框形式 caret:一个用于解决分类和回归问题的数据训练综合工具包 glmnet:通过极大惩罚似然来拟合广义线性模型 gbm:用于实现随机梯度提升算法 xgboost:全称是eXtreme Gradient Boosting。是Gradient Boosting Machine的一个c++实现。目前已制作了xgboost工具的R语言接口。详见统计之都的一篇介绍 randomForest:提供了用随机森林做回归和分类的函数 ranger:用于随机森林算法的快速实现 h2o:H2O是0xdata的旗舰产品,是一款核心数据分析平台。它的一部分是由R语言编写的,另一部分是由Java和Python语言编写的。用户可以部署H2O的R程序安装包,之后就可以在R语言环境下运行了。 ROCR:通过绘图来可视化分类器的综合性能。 pROC:用于可视化,平滑和对比ROC曲线 沟通交流 以下R包用于实现数据科学结果的自动化报告,以便于你跟人们进行沟通交流。 rmarkdown :用于创建可重复性报告和动态文档 knitr:用于在PDF和HTML文档中嵌入R代码块 flexdashboard:基于rmarkdown,可以轻松的创建仪表盘 bookdown:以R Markdown为基础,用于创作书籍和长篇文档 rticles:提供了一套R Markdown模板 tufte:用于实现Tufte讲义风格的R Markdown模板 DT:用于创建交互式的数据表 pixiedust:用于自定义数据表的输出 xtable:用于自定义数据表的输出 highr:用于实现R代码的LaTeX或HTML格式输出 formatR:通过tidy_source函数格式化R代码的输出 yaml:用于实现R数据与YAML格式数据之间的通信。 自动化分析 以下R包用于创建自动化分析结果的数据科学产品: shiny:一个使用R语言开发交互式web应用程序的工具。中文教程 shinydashboard:用于创建交互式仪表盘 shinythemes:给出了Shiny应用程序的常用风格主题 shinyAce:为Shiny应用程序开发者提供Ace代码编辑器。 shinyjs:用于在Shiny应用程序中执行常见的JavaScript操作 miniUI:提供了一个UI小部件,用于在R命令行中集成交互式应用程序 shinyapps.io:为创建的Shiny应用程序提供托管服务 Shiny Server Open Source:为Shiny应用程序提供开源免费的服务器 Shiny Server Pro:为企业级用户提供一个Shiny应用程序服务器 rsconnect:用于将Shiny应用程序部署到shinyapps.io plumber:用于将R代码转化为一个web API rmarkdown:用于创建可重复性报告和动态文档 rstudioapi:用于安全地访问RStudio IDE的API 程序开发 以下这些包主要用于开发自定义的R包: RStudio Desktop IDE:R的IDE。大家都懂,不用解释。 RStudio Server Open Source:开源免费的RStudio服务器 RStudio Server Professional:商业版RStudio服务器 devtools:一个让开发R包变得简单的工具集 packrat:创建项目的特定库,用于处理包的版本问题,增强代码重现能力。 drat:一个用于创建和使用备选R包库的工具 testthat:单元测试,让R包稳定、健壮,减少升级的痛苦。 roxygen2:通过注释的方式,生成文档,远离Latex的烦恼。 purrr:一个用于 提供函数式编程方法的工具 profvis:用于可视化R代码的性能分析数据 Rcpp:用于实现R与C++的无缝整合。详见统计之都文章 R6:R6是R语言的一个面向对象的R包,可以更加高效的构建面向对象系统。 htmltools:用于生成HTML格式输出 nloptr:提供了一个NLopt非线性优化库的接口 minqa:一个二次近似的优化算法包 rngtools:一个用于处理随机数生成器的实用工具 NMF:提供了一个执行非负矩阵分解的算法和框架 crayon:用于在输出终端添加颜色 RJSONIO:rjson是一个R语言与json进行转的包,是一个非常简单的包,支持用 C类库转型和R语言本身转型两种方式。 jsonlite:用于实现R语言与json数据格式之间的转化 RcppArmadillo:提供了一个Armadillo C++ Library(一种C++的线性代数库)的接口 实验数据 以下R包给出了案例实战过程中可用的训练数据集: babynames:包含由美国社会保障局提供的三个数据集 neiss:2009-2014年期间提供给美国急诊室的所有事故报告样本数据 yrbss:美国疾病控制中心2009-2013年期间青年危险行为监测系统数据 hflights: USAboundaries:2011年全年休斯顿机场的所有航班数据 rworldmap:国家边界数据 usdanutrients:美国农业部营养数据库 fueleconomy:美国环保署1984-2015年期间的燃油经济数据 nasaweather:包含了一个覆盖中美洲的非常粗糙的24*24格地理位置和大气测量数据。 mexico-mortality:墨西哥死亡人数数据 data-movies和ggplotmovies:来自互联网电影数据库imdb.com的数据 pop-flows:2008年全美人口流动数据 data-housing-crisis:经过清洗后的2008美国房地产危机数据 gun-sales:纽约时报提供的有关枪支购买的每月背景调查统计分析数据 stationaRy:从成千上万个全球站点收集到的每小时气象数据 gapminder:摘自Gapminder的数据 janeaustenr:简·奥斯丁小说全集数据 更多R包介绍查看CRAN任务视图
0 个评论
分享 像Excel一样使用python进行数据分析-(1) Read more: http://bluewhale.cc/2017-04-06 ...
auto_water 2017-4-21 15:37
Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作。在Python中pandas库用于数据处理 ,我们从1787页的pandas官网文档中总结出最常用的36个函数,通过这些函数介绍如何通过python完成数据生成和导入,数据清洗,预处理,以及最常见的数据分类,数据筛选,分类 汇总,透视等最常见的操作。 文章内容共分为9个部分。这是第一篇,介绍前3部分内容,数据表生成,数据表查看,和数据清洗。以下是《像Excel一样使用python进行数据分析》系列文章的目录。 1, 生成数据表 第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。 python支持从多种类型的数据导入。在开始使用python进行数据导入前需要先导入pandas库,为了方便起见,我们也同时导入numpy库。 1 2 import numpy as np import pandas as pd 导入数据表 下面分别是从excel和csv格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考pandas的 官方文档。 1 2 df=pd.DataFrame(pd.read_csv('name.csv',header=1)) df=pd.DataFrame(pd.read_excel('name.xlsx')) 创建数据表 另一种方法是通过直接写入数据来生成数据表,excel中直接在单元格中输入数据就可以,python中通过下面的代码来实现。生成数据表的函数是pandas库中的DateFrame函数,数据表一共有6行数据,每行有6个字段。在数据中我们特意设置了一些NA值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以DataFrame的简称df来命名数据表。 1 2 3 4 5 6 7 df = pd.DataFrame({"id": , "date":pd.date_range('20130102', periods=6), "city": , "age": , "category": , "price": }, columns = ) 这是刚刚创建的数据表,我们没有设置索引列,price字段中包含有NA值,city字段中还包含了一些脏数据。 2,数据表检查 第二部分是对数据表进行检查,python中处理的数据量通常会比较大,比如我们之前的文章中介绍的纽约出租车数据和Citibike的骑行数据,数据量都在千万级,我们无法一目了然的 了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。 数据维度(行列) Excel中可以通过CTRL+向下的光标键,和CTRL+向右的光标键来查看行号和列号。Python中使用shape函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有6行,6列。下面是具体的代码。 1 2 3 #查看数据表的维度 df.shape (6, 6) 数据表信息 使用info函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #数据表信息 df.info() lt;class 'pandas.core.frame.DataFrame'gt; RangeIndex: 6 entries, 0 to 5 Data columns (total 6 columns): id 6 non-null int64 date 6 non-null datetime64 city 6 non-null object category 6 non-null object age 6 non-null int64 price 4 non-null float64 dtypes: datetime64 (1), float64(1), int64(2), object(2) memory usage: 368.0+ bytes 查看数据格式 Excel中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python中使用dtypes函数来返回数据格式。 Dtypes是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。 1 2 3 4 5 6 7 8 9 10 #查看数据表各列格式 df.dtypes id int64 date datetime64 city object category object age int64 price float64 dtype: object 1 2 3 4 #查看单列格式 df .dtype dtype('int64') 查看空值 Excel中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。 Isnull是Python中检验空值的函数,返回的结果是逻辑值,包含空值返回True,不包含则返回False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。 1 2 #检查数据空值 df.isnull() 1 2 3 4 5 6 7 8 9 10 #检查特定列空值 df .isnull() 0 False 1 True 2 False 3 False 4 True 5 False Name: price, dtype: bool 查看唯一值 Excel中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python中使用unique函数查看唯一值。 Unique是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与Excel中删除重复项后的结果。 1 2 3 4 #查看city列中的唯一值 df .unique() array( , dtype=object) 查看数据表数值 Python中的Values函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #查看数据表的值 df.values array( , , , , , ], dtype=object) 查看列名称 Colums函数用来单独查看数据表中的列名称。 1 2 3 4 #查看列名称 df.columns Index( , dtype='object') 查看前10行数据 Head函数用来查看数据表中的前N行数据,默认head()显示前10行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前3行的数据。 1 2 #查看前3行数据 df.head(3) 查看后10行数据 Tail行数与head函数相反,用来查看数据表中后N行的数据,默认tail()显示后10行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后3行的数据。 1 2 #查看最后3行 df.tail(3) 3,数据表清洗 第三部分是对数据表中的问题进行清洗。主要内容包括对空值,大小写问题,数据格式和重复值的处理。这里不包含对数据间的逻辑验证。 处理空值(删除或填充) 我们在创建数据表的时候在price字段中故意设置了几个NA值。对于空值的处理方式有很多种,可以直接删除包含空值的数据,也可以对空值进行填充,比如用0填充或者用均值填充。还可以根据不同字段的逻辑对空值进行推算。 Excel中可以通过“查找和替换”功能对空值进行处理,将空值统一替换为0或均值。也可以通过“定位”空值来实现。 Python中处理空值的方法比较灵活,可以使用 Dropna函数用来删除数据表中包含空值的数据,也可以使用fillna函数对空值进行填充。下面的代码和结果中可以看到使用dropna函数后,包含NA值的两个字段已经不见了。返回的是一个不包含空值的数据表。 1 2 #删除数据表中含有空值的行 df.dropna(how='any') 除此之外也可以使用数字对空值进行填充,下面的代码使用fillna函数对空值字段填充数字0。 1 2 #使用数字0填充数据表中空值 df.fillna(value=0) 我们选择填充的方式来处理空值,使用price列的均值来填充NA字段,同样使用fillna函数,在要填充的数值中使用mean函数先计算price列当前的均值,然后使用这个均值对NA进行填 充。可以看到两个空值字段显示为3299.5 1 2 3 4 5 6 7 8 9 10 #使用price均值对NA进行填充 df .fillna(df .mean()) 0 1200.0 1 3299.5 2 2133.0 3 5433.0 4 3299.5 5 4432.0 Name: price, dtype: float64 清理空格 除了空值,字符中的空格也是数据清洗中一个常见的问题,下面是清除字符中空格的代码。 1 2 #清除city字段中的字符空格 df =df .map(str.strip) 大小写转换 在英文字段中,字母的大小写不统一也是一个常见的问题。Excel中有UPPER,LOWER等函数,python中也有同名函数用来解决大小写的问题。在数据表的city列中就存在这样的问题。我们将city列的所有字母转换为小写。下面是具体的代码和结果。 1 2 3 #city列大小写转换 df =df .str.lower() 更改数据格式 Excel中通过“设置单元格格式”功能可以修改数据格式。Python中通过astype函数用来修改数据格式。 Python中dtype是查看数据格式的函数,与之对应的是astype函数,用来更改数据格式。下面的代码中将price字段的值修改为int格式。 1 2 3 4 5 6 7 8 9 10 #更改数据格式 df .astype('int') 0 1200 1 3299 2 2133 3 5433 4 3299 5 4432 Name: price, dtype: int32 更改列名称 Rename是更改列名称的函数,我们将来数据表中的category列更改为category-size。下面是具体的代码和更改后的结果。 1 2 #更改列名称 df.rename(columns={'category': 'category-size'}) 删除重复值 很多数据表中还包含重复值的问题,Excel的数据目录下有“删除重复项”的功能,可以用来删除数据表中的重复值。默认Excel会保留最先出现的数据,删除后面重复出现的数据。 Python中使用drop_duplicates函数删除重复值。我们以数据表中的city列为例,city字段中存在重复值。默认情况下drop_duplicates()将删除后出现的重复值(与excel逻辑一致)。增加keep=’last’参数后将删除最先出现的重复值,保留最后的值。下面是具体的代码和比较结果。 原始的city列中beijing存在重复,分别在第一位和最后一位。 1 2 3 4 5 6 7 8 df 0 beijing 1 sh 2 guangzhou 3 shenzhen 4 shanghai 5 beijing Name: city, dtype: object 使用默认的drop_duplicates()函数删除重复值,从结果中可以看到第一位的beijing被保留,最后出现的beijing被删除。 1 2 3 4 5 6 7 8 #删除后出现的重复值 df .drop_duplicates() 0 beijing 1 sh 2 guangzhou 3 shenzhen 4 shanghai Name: city, dtype: object 设置keep=’last‘’参数后,与之前删除重复值的结果相反,第一位出现的beijing被删除,保留了最后一位出现的beijing。 1 2 3 4 5 6 7 8 #删除先出现的重复值 df .drop_duplicates(keep='last') 1 sh 2 guangzhou 3 shenzhen 4 shanghai 5 beijing Name: city, dtype: objec 数值修改及替换 数据清洗中最后一个问题是数值修改或替换,Excel中使用“查找和替换”功能就可以实现数值的替换。 Python中使用replace函数实现数据替换。数据表中city字段上海存在两种写法,分别为shanghai和SH。我们使用replace函数对SH进行替换。 1 2 3 4 5 6 7 8 9 #数据替换 df .replace('sh', 'shanghai') 0 beijing 1 shanghai 2 guangzhou 3 shenzhen 4 shanghai 5 beijing Name: city, dtype: object 在第二篇文章中我们将继续介绍4-6部分的内容,分别为数据预处理,数据提取和数据筛选三部分的问题。感兴趣的朋友请继续关注。 Read more: http://bluewhale.cc/2017-04-06/use-python-for-data-analysis-like-excel-1.html#ixzz4erq6FWRJ
19 次阅读|0 个评论
GMT+8, 2026-2-13 02:58