itextpdf 表格只有一条数据未显示_数据分析入门:Excel的正确使用方法(应用篇)...

7b0d4763a8aa9d883923e557d1937d49.png
zhimg_answer_editor_file_table.svg
表1购买商品.xls
10.6M
·
百度网盘
zhimg_answer_editor_file_table.svg
表2婴儿信息.xls
71.7K
·
百度网盘

9cf049454cacecb57217b122db42f93c.png

753ad4f4e2a4ee37326c902b9db6ab40.png

数据分析步骤:

一、明确问题

1. 「 商品哪个一级分类最畅销?哪个二级分类最畅销?」

2.「哪个单品销量高?」

3.「哪个年/季度/月销量比较高?」

4.「哪些顾客购买量比较大(优质顾客)?」

5.「哪个年龄段是主要消费群体?」

6.「消费中男女顾客占比怎样?」

二、理解数据

1. 表格1购买商品

用户ID:user_id

商品编号(item_id):auction_id

商品二级分类:cat_id,商品种类ID,表示商品属于哪个类别

商品一级分类:cat1,商品种类ID,表示商品属于哪个类别

(商品的一级分类和二级分类,比如上衣和衣服,汽车和玩具汽车这样的关系。虽然都是数字串id,但是根据这层关系,就可以用数据透视表来展示逻辑关系。比如商品大类下面,哪个分类更畅销)

商品属性:property(属性值可以是大小,可以是尺码、毫升等数字,还可以指品牌等,一切可以描述商品特征的都可以称为属性值)

购买数量:buy_mount

购买时间:day(可以通过excel将时间戳显示为日期格式)

2. 表格2婴儿信息

用户ID:user_id

出生日期:birthday

性别:gender(0女性;1男性;2未知的性别)

三、数据清洗

1. 选择子集

01a9fcb9a7c25764be9e2674b2ceab9f.png

表1中商品属性在表格中用处不大,这一栏可以不用作为分析对象,另外要注意,数据清洗时一般尽量不删除原有数据,所以我们选择隐藏该列。

操作:方法1:选择整列-右击-【隐藏】

2. 列名重命名

153109c444fa4daa2c93a1df256da0b4.png

86a5d23919dd94c1dbac60879bbcf61f.png

表格2中性别一列阅读不便,我们选择把数字“0,1,2”分别更改为对应的“女,男,未知”。

操作:重新插入一列,在单元格应用IF函数替换,=IF(C2=0,"女",IF(C2=1,"男","未知"))

选定单元格-双击鼠标右下角十字架,应用到整列-隐藏左侧性别一列

3. 删除重复值

1c512a15ed15aeb8e2e290ef08f51115.png

6c327bbf00ff75aefdd9c4f0d26b6d6a.png

根据表格内容理解分析,只有表格2婴儿信息中的用户ID是唯一的,可以采取删去重复值功能。结果显示未发现重复值。

操作:【数据】-【删除重复项】-【扩展选定区域】-【删除重复项】-选择用户ID列

4. 缺失值处理

表格1购买商品中,除了已经隐藏的商品属性列为29828项外,所有列数量都为29972项。由于商品属性列不准备使用,可以不补充缺失值。

表格2婴儿信息中,每列都为954项,没有缺失值。

搜索缺失值操作:【开始】-【查找和选择】-【定位条件】-选择空值

5. 一致化处理

dbf8392b3ba41cbad7dc6ad4c30ec340.png

766079285a7c16340dabfcef2cd68fa0.png

45ed600c0a616ff848713283ab70afb5.png

1b260f840a19089c67d4d8ab0f35a36d.png

表格1购买商品中购买时间列和表格2婴儿信息出生日期列,都为数字类型,为了后续透视表分析,需要更改为日期类型。

操作:选定整列-【数据】- 【分列】-【分隔符号】-【连续分割符号视为单个处理】-选择列数据格式为YMD|yyyy/m/d

6. 数据排序

56161f14327e06b158121156b6966ad0.png

通过给购买数量列排序,可以看到对应哪单的购买数量比较高。

操作:选定整列-【开始】-【排序和筛选】-选择降序-【扩展选定区域】-排序

7. 异常值处理

bc13956d5b327b3329e23766063dd09f.png

2b5b80584bbd28f68c7f785dd030f509.png

使用筛选功能,观察表格1和表格2中每列的数据有哪些异常。表格1中未发现问题,表格2中出生日期一列中,用户范围都在2002-2015年内,只有1个数值为1984/6/16而且只有这一例,考虑为异常数据。另外在表格1购买商品中查询该用户ID89520261,确实存在购买1次购买记录,所以不适合直接删除,考虑将其出生日期更改为2002-2015范围的大概中间值2008/6/16,避免影响整体数据分析。其在954个用户ID个信息中,更改这一个异常值对数据分析不会造成影响。

四、数据分析 或 构建模型

解答1「 商品哪个一级分类最畅销?哪个二级分类最畅销?」

结果:制作数据透视表,使用排序功能,可以看出商品二级分类中50018831最畅销,商品一级分类中28最畅销。

操作:【插入】-【数据透视表】-【选择一个表或区域】【新建工作表】-拖动字段名称【商品二级分类】到行,【商品一级分类】到列,【购买数量】到值-在总计行和列中分别设置排序【降序】

c27bd041956505bc703de6f599296d18.png

bed5c3e7dbac31998678877aa8d353e4.png

解答2「哪个单品销量高?」

结果:制作数据透视表,使用排序功能,可以看出商品编号39769942518销量最高,总销量为10000。(补充内容:销量最高这个商品与排名接下来的几个对比看,差了不止一个数量级,返回表格找原因,发现这单是因为一个客户一次性购买了10000,所以该产品在备货上有不确定性,该产品需要多观察一段时间;另外,排名第二的20409520643和第三的36505037679销量也较高)

操作:【插入】-【数据透视表】-【选择一个表或区域】【新建工作表】-拖动字段名称【商品编号】到行,【购买数量】到值-选定汇总列任一单元格设置排序【降序】

cf1726b4cbdfdff77343b8ddb8b99daa.png

解答3「哪个年/季度/月销量比较高?」

结果:制作数据透视表,可以看出在2012年-2015年范围内,2014年总销量最高为42241,2014年>2013年>2012年>2015年。所有季度中,2014年第四季度销量最高为18872。所有月份中,2014年第四季度11月销量最高为13044。整体来看 ,每年第三季度第四季度业绩相对较高。(补充内容:可以进一步做月份和日期的销量探索)

操作:【插入】-【数据透视表】-【选择一个表或区域】【新建工作表】-拖动字段名称【购买日期】到行,【购买数量】到值-选定汇总列任一单元格设置排序【降序】

7d84f653c5db2ca5d70b6c8dc2e05449.png

b234d0e2182c0eaaf55af52f3a5dfa55.png

673b0f9912b184fba9a479ca57c2676f.png

解答4「哪些顾客购买量比较大(优质顾客)?」

结果:由于表格中没有给出产品对应的单价,无法计算顾客的总销售额,我们取而求其次暂且以用户的较高购买数量的,评判为优质顾客。制作透视表,使用排序功能,可以看出2288344467购买的商品数量最高。

操作:【插入】-【数据透视表】-【选择一个表或区域】【新建工作表】-拖动字段名称【用户ID】到行,【购买数量】到值-选定汇总列任一单元格设置排序【降序】

81ee6fb4974beaf034cb5307ab5f194d.png

解答5「哪个年龄段是主要消费群体?」

结果:除了把两个表格内容对应合到一个表格进行年龄分析外,我们还可以使用多表关联查询的vlookup函数,快速的把对个表格关联起来。

vlookup(找什么,在哪儿找,第几列,准确查找【0】还是模糊查找【1】)

c72fdaab12ce6445be86364f74620036.png

原本考虑到客户会出现复购现象,还有表格1每列项数(29972项)远远大于表格2列数(954项),考虑把表格2婴儿信息,对应到表格1的用户ID中来分析,结果应用vlookup后匹配的行数只有957项,剩余29016项为空值,意味着大量的空值无法带入分析,该表考虑复购率没有意义。更改方向,以表格2婴儿信息用户ID为标准,应用vlookup函数带入表1商品购买的相关值。

bac3608ddbf7cb822398d3ca156ff633.png

消费年龄1=YEAR(G2-D2); 消费年龄2=(G2-D2)/365

对比发现两种方式结果不同,相对于年底出生次年初购买的消费者,消费年龄1计算出的结果与实际年龄相差较大,所以我们选择消费年龄2的公式计算。具体如下图:

3176f4c5aab91cdda2d00dc5ffbcb14b.png

另外,vlookup函数还可以用来对数据进行分组。由于我们想要统计各年龄段用户使用婴儿用品的情况,所以我们需要对年龄进行分组。具体如下图:

f15601ed4096ebe05535564d3464fcf4.png

用透视表进行各年龄组的分析:

结果1:透视表中可以看出,婴儿产品的主要消费年龄主要为未出生-3岁之间,其中最多的是0-1岁宝宝。

操作:【插入】-【数据透视表】-【选择一个表或区域】【新建工作表】-拖动字段名称【年龄分组】到行,【年龄分组】到值-在汇总列中设置排序【降序】

7d1dc249ffc563118db265392eba91fc.png

结果2:制作数据透视表,使用排序功能,可以看出婴儿产品的主要销量也是集中在未出生-3岁之间,同年龄分组中顾客数量排序相同。并且在透视表中,也能看出各个年龄组中商品一级分类产品销量排行,同时不同年龄段的分类倾向略有不同。(补充内容:除了分析各分类销量外,还可以把商品分类替换成各单品,使用排序功能,分析出各年龄段每个单品的销量排序,找到各年龄段的婴儿畅销款,做到精准营销)

操作:【插入】-【数据透视表】-【选择一个表或区域】【新建工作表】-拖动字段名称【年龄分组】到行,【商品一级分类】到列,【购买数量】到值-在行和列的总计中选中任一单元格设置排序【降序】

9e09d7f884ce3bd6d8194c4233ab91a7.png

另外可以用统计描述来看用户年龄分布,如下图。

操作:选择消费年龄2整列-【数据】-【数据分析】-【描述性统计】

aba8cdcd4395fe822afbd96ad6190306.png

b8da4a92ac49edc6c6c85fc80f5d7afd.png

解答6「消费中男女顾客占比怎样?」

结果:制作数据透视表,可以看出消费中男女顾客占比438:489整体差别不大。

操作:【插入】-【数据透视表】-【选择一个表或区域】【新建工作表】-拖动字段名称【性别2】到行,【性别2】到值。

b641e5d21618a8c1b8ec1e9692465d22.png

五、数据可视化-这块下次给大家分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用 iTextPDF 5.5.10 导出 PDF 表格的示例工具类,其中包含支持单元格合并的方法: ```java import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import java.io.FileNotFoundException; import java.io.FileOutputStream; public class PDFExporter { public static void exportTableToPDF(String filePath, String[] header, String[][] data) { Document document = new Document(PageSize.A4.rotate()); try { PdfWriter.getInstance(document, new FileOutputStream(filePath)); document.open(); PdfPTable table = new PdfPTable(header.length); table.setWidthPercentage(100); for (String column : header) { PdfPCell cell = new PdfPCell(); cell.setPhrase(new com.itextpdf.text.Paragraph(column)); table.addCell(cell); } for (int row = 0; row < data.length; row++) { for (int column = 0; column < data[row].length; column++) { PdfPCell cell = new PdfPCell(); cell.setPhrase(new com.itextpdf.text.Paragraph(data[row][column])); table.addCell(cell); } } document.add(table); } catch (DocumentException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { document.close(); } } public static void mergeCells(PdfPTable table, int row1, int col1, int row2, int col2) { for (int row = row1; row <= row2; row++) { for (int col = col1; col <= col2; col++) { if (row == row1 && col == col1) { continue; } PdfPCell cell = table.getRow(row).getCells()[col]; cell.setPhrase(null); cell.setPadding(0); cell.setBorder(PdfPCell.NO_BORDER); } } PdfPCell cell = table.getRow(row1).getCells()[col1]; cell.setRowspan(row2 - row1 + 1); cell.setColspan(col2 - col1 + 1); } } ``` 调用 `exportTableToPDF` 方法可以将一个二维字符串数组导出为一个 PDF 表格文件,其中第一个参数是文件路径,第二个参数是表头数组,第三个参数是数据数组。 调用 `mergeCells` 方法可以将表格中的多个单元格合并为一个单元格,其中第一个参数是目标表格,第二个参数是起始行号,第三个参数是起始列号,第四个参数是结束行号,第五个参数是结束列号。 例如,如果要将第 2 行第 3、4、5 列合并为一个单元格,可以这样调用 `mergeCells` 方法: ```java PDFExporter.mergeCells(table, 1, 2, 1, 4); ``` 其中 `table` 是导出 PDF 表格的 `PdfPTable` 对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值