当前位置: 首页 > news >正文

pandas 学习

读取 csv

import pandas as pd
df = pd.read_csv('event_detail.csv',nrows=1000)
df.head()

在这里插入图片描述

df.tail()

在这里插入图片描述

获取列名

list(df)
['distinct_id',
 'time',
 'xwhat',
 '$browser',
 '$browser_version',
 '$is_first_day',
 '$is_login',
 '$lib',
 '$lib_version',
 '$os',
 '$os_version',
 ...
 '$signup_time',
 '$url_domain',
 '$is_time_calibrated',
 '$click_x',
 '$click_y',
 '$device_type',
 '$element_path',
 '$page_height',
 '$page_width',
 '$event_duration',
 '$viewport_height',
 '$viewport_position',
 '$viewport_width',
 '$campaign_shortlink',
 '$pagename',
 'nav_name',
 'referrer_demo',
 'board_name',
 'click_position',
 'datafrom']

将数据转化成 array

df.get_values()
array([[-5244847218789979212, 20181123, '$startup', ..., nan, nan, nan],
       [-5244847218789979212, 20181123, '$pageview', ..., nan, nan, nan],
       [-9066197911718350456, 20181125, '$startup', ..., nan, nan, nan],
       ...,
       [9098967348431554882, 20181120, '$pageview', ..., nan, nan, nan],
       [9098967348431554882, 20181120, '$pageview', ..., nan, nan, nan],
       [9098967348431554882, 20181120, '$pageview', ..., nan, nan, nan]],
      dtype=object)

查看每一列中缺失数据有多少

import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(20,5))
count = df.isnull().sum()/1000 # 1000行数据
count.plot( kind='bar', alpha= 0.7) 
plt.show()

在这里插入图片描述
上面那写全是 NULL 的列可以直接抛弃了

selected_keys = list(count[count<=0.01].keys())
df[selected_keys]
	distinct_id	time	xwhat	$is_first_day	$is_login	$lib	$lib_version	$platform	$screen_height	$screen_width	$country	$province	$time_zone	$web_crawler
0	-5244847218789979212	20181123	$startup	1.0	0	JS	4.1.2	JS	1024.0	1024.0	中国	北京	GMT-08:00	1.0
1	-5244847218789979212	20181123	$pageview	1.0	0	JS	4.1.2	JS	1024.0	1024.0	中国	北京	GMT-08:00	1.0
2	-9066197911718350456	20181125	$startup	1.0	0	JS	4.1.2	JS	1600.0	1600.0	中国	北京	GMT+08:00	1.0
3	-9066197911718350456	20181125	$pageview	1.0	0	JS	4.1.2	JS	1600.0	1600.0	中国	北京	GMT+08:00	1.0
4	-9066197911718350456	20181125	$pageview	1.0	0	JS	4.1.2	JS	1600.0	1600.0	中国	北京	GMT+08:00	1.0
...	...	...	...	...	...	...	...	...	...	...	...	...	...	...

998	9098967348431554882		20181120	$pageview	0.0	1	JS	4.1.2	JS	1080.0	1920.0	中国	湖南	GMT+08:00	0.0
999	9098967348431554882		20181120	$pageview	0.0	1	JS	4.1.2	JS	1080.0	1920.0	中国	湖南	GMT+08:00	0.0
1000 rows × 14 columns

透视表

selected = df[selected_keys]
selected['time'].astype(np.dtype('datetime64[ns]'))
total_actions = selected.pivot_table('distinct_id', index='time', columns='xwhat', aggfunc='count',fill_value=0, margins=True)
total_actions
xwhat	$pageview	$startup	ClickMPA	ClickNav	Signup	chart_area_panel	company_size_sel	corporate_name_click	demo_click	department_sel	...	login	reg_agree_click	reg_code_input	reg_getmsg_click	reg_input_success	reg_mail_input	reg_msg_input	reg_phone_input	reg_submit_click	All
time																					
20181120	271	82	0	0	0	0	2	2	14	2	...	2	3	1	1	2	1	2	1	5	406
20181123	1	1	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	2
20181124	30	30	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	60
20181125	337	134	3	1	2	3	0	0	4	0	...	0	2	6	2	2	2	2	4	3	530
20181228	1	1	0	0	0	0	0	0	0	0	...	0	0	0	0	0	0	0	0	0	2
All			640	248	3	1	2	3	2	2	18	2	...	2	5	7	3	4	3	4	5	8	1000
6 rows × 22 columns
total_actions[['$pageview','reg_input_success']].plot(subplots=False, figsize=(18,6), kind='area')
plt.show()

在这里插入图片描述

相关文章:

  • ORM in .NET 3.5
  • jupyter notebook 选择新的 conda 环境
  • python 生成字母图片
  • 新爹手记之起名篇
  • 使用LumaQQ来开发QQ机器人
  • 图信号处理——拉普拉斯矩阵
  • SPS中计算值公式函数简介
  • 台式机核显和独显切换
  • SPS常见公式示例
  • ModuleNotFoundError: No module named 'torch_sparse.unique_cuda'
  • ModuleNotFoundError: No module named 'torch_scatter.cuda'
  • 反击arp病毒攻击
  • 数据降维与可视化——t-SNE
  • 单例模式完全剖析(1)---- 探究简单却又使人迷惑的单例模式
  • 使用 texttable可视化
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • DOM的那些事
  • Java 内存分配及垃圾回收机制初探
  • leetcode388. Longest Absolute File Path
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • PHP变量
  • Redis 懒删除(lazy free)简史
  • ubuntu 下nginx安装 并支持https协议
  • Vue.js源码(2):初探List Rendering
  • 从重复到重用
  • 后端_ThinkPHP5
  • 基于遗传算法的优化问题求解
  • 前端路由实现-history
  • 前端知识点整理(待续)
  • 区块链分支循环
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 手写双向链表LinkedList的几个常用功能
  • 微信小程序:实现悬浮返回和分享按钮
  • 我从编程教室毕业
  • 小李飞刀:SQL题目刷起来!
  • 新版博客前端前瞻
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 一起参Ember.js讨论、问答社区。
  • 终端用户监控:真实用户监控还是模拟监控?
  • linux 淘宝开源监控工具tsar
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (6)设计一个TimeMap
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (二开)Flink 修改源码拓展 SQL 语法
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十) 初识 Docker file
  • (五)Python 垃圾回收机制
  • (转)jQuery 基础
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net FrameWork总结
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)