搜 索

pandas从入门到放弃

  • 291阅读
  • 2022年05月29日
  • 0评论
首页 / 数据处理 / 正文

什么是Pandas

在python中,Pandas是数据处理必不可少的工具,不管是数据分析还是深度学习,都离不开pandas。它底层用c实现,所以数据处理速度非常快,而且库提供了很多便捷的数据处理api,处理数据非常实用。

Pandas使用

Pandas 有两种数据结构: Series和DataFrame

import pandas as pd
from pandas import Series, DataFrame

pandas的奇技淫巧

删除异常数据&补全缺失数据

这里书写代码...

pandas的相关库

Numpy

Numpy主要是矩阵计算,在机器学习中经常会被用到,等到讲解机器学习的教程时我们再来做详解。

Matplotlib

绘图库。

pandas实践之卡bin数据分析

卡bin是支付中从卡号识别出信息的重要字典,其数据量动辄几十万,若使用硬编码分析,需要非常久的时间,而使用pandas非常快,只要短短几秒就能得出结果。
以下为一条数据
457186;VISA/DANKORT;NETS;DEBIT;CLASSIC;DENMARK;DK;DNK;208;HTTP://WWW.TELLER.COM /;915 08 989;16;PERSONAL;N

123456789
字段说明卡bin卡组织银行名借记/贷记卡级别国家名国家国家币种
筛选规则 "若国家为AE,银行名为空则舍弃;
若国家不为AE,银行名为空也保留" 该字段若为空,则使用默认值16
补充说明6-10位 DEBIT/CREDITCLASSIC 两位国家编码三位国家编码三位数字的币种

从原数据中输出5000条待分析数据

file_path = "/opt/file/dataset/bins_all.csv"
# 读取csv数据,原文件单行分隔符为;,指定列索引名,指定所有数据均为string类型
df = pd.read_csv(file_path, sep=';', header=None, index_col=False, names=['card_bin','card_brand','bank_name','drcr','class','country_name','cc','cc3','currency','website','phone_no','card_len','person','unknown'], dtype=str)
df.head()
# 随机选出5000条输出到目标csv中
df.sample(5000).to_csv("/opt/file/dataset/bins_analysis.csv")

数据分析

# 删除重复的数据,在当前数据集中card_bin+card_len应该是唯一索引
df.drop_duplicates(['card_bin','card_len'],keep='last')
# 若cc为AE则bank_name不能为空(删除cc为AE且bank_name为空的数据)


pandas在java中的实践

pandas基本是数据分析的事实标准,java中也不乏模仿者,其中比较出名的是joinery和tablesaw,joinery主要实现的是DataFrame,而tablesaw侧重于图表显示,需要注意这两个框架的知名度和成熟度都远逊于pandas。在此对joinery的使用做简要叙述,并简单测试了对110m的文件读写性能与pandas对比。

joinery使用说明

joinery和pandas读取文件对比

场景耗时(s)JoineryPandas
删除无效和重复数据()411174
100次全量读取并describe603270
50次读取并value_count 1/3/11/12/13列411174
筛选3列为AE并describe表格表格

比对结果:joinery相比pandas的describe,缺少了25%,50%,75%三项数据,但是速度要慢一倍以上

参考资料

《深入浅出Pandas:利用Python进行数据处理与分析》
《利用python进行数据分析》
Pandas教程

评论区
暂无评论
avatar