利用python学习数据分析之数据导入

本文为Udacity数据分析入门课程学习笔记,数据源为课程附件资料3个csv表格记录Udacity的学员注册信息,学员每日参与行为数据,项目记录,课程主要目标学习对这3个数据集进行数据分析练习,学习数据分析思维及基本出来方法。

练习环境:Anaconda 下的Jupyter Notebookcsv文件的导入,使用unicodecsv模块读取数据;

加载unicodecsv包并定义一个读取csv文档的函数read_csv,实现传入文件名可返回文件列表:

import unicodecsv

def read_csv(filename):

with open(filename,'rb') as f: #打开传入文件路径文件with

reader = unicodecsv.DictReader(f)

return list(reader)

分别传入3个文件名,读取csv文件(其实读取csv文件,用pandas包的read_csv/read_table

更方便,已有现场方法可以使用。

查看每个表的第一条记录,看到表中字段存储数据类型,分析3个表之间的关联方式。

可看到表中返回的都是文本类型的,要进行下一步的数据处理就需要修正相应转换类型

2.修改表格内数据类型

修改列的数据类型,主要修改将文本形式的时间记录变为时间类型,’整型‘变为变为int,‘bool’的变为bool。

from datetime import datetime as dt #导入一个时间处理包

'''这里定义两个函数,分别将文本类型转换为时间/整型数据,将空值转化为Null'''

def prase_data(data):

if isinstance(data, unicode): #这里加多一层判断,因为数据源了可能有混合文本和时间类型

if data == '':

return None

else:

return dt.strptime( data, '%Y-%m-%d') #datatime的strptime方法出来文本时间为相应格式

else:

if data =='':

return None

else:

return data

def prase_int(i):

if i == '':

return None

else:

return int(i)

然后对表格需要转换的列,都应用相应的函数:

for sub_enr in enr:

sub_enr['cancel_date'] = prase_data(sub_enr['cancel_date'])

sub_enr['days_to_cancel'] = prase_int(sub_enr['days_to_cancel'])

sub_enr['join_date'] = prase_data(sub_enr['join_date'])

sub_enr['is_canceled'] = sub_enr['is_canceled']=='True' #转换bool型用这样方式转化即可

sub_enr['is_udacity'] = sub_enr['is_udacity']=='True'

for sub_pro in pro:

sub_pro['completion_date']=prase_data(sub_pro['completion_date'])

sub_pro['creation_date']=prase_data(sub_pro['creation_date'])

for sub_dai in dai:

sub_dai['lessons_completed']=int(float(sub_dai['lessons_completed'])) #表格中完成课程数为'0.0',需先转化浮动型数字再娶整数

sub_dai['projects_completed']=int(float(sub_dai['projects_completed']))

sub_dai['total_minutes_visited']=float(sub_dai['total_minutes_visited'])

sub_dai['utc_date']=prase_data(sub_dai['utc_date'])

查看转换格式后的每个表:

看到返回结果可以看到,已经修正好非文本类型,转换为相应的数据类型。

不过看到dai表格中’acct‘列名,与其他两个表不一样’account_key‘,都是记录账号的,在此需要对dai中的列进行重命名,统一相同内容的列名;

for sub_dai in dai:

sub_dai['account_key']=sub_dai['acct'] #创建一个新的列名,并将原来acct的值传递给它

del sub_dai['acct']

查看修改后dai[0]

已经完成csv数据的加载和基本数据类型转换,统一了相同的列名。

下一步可以初步探索数据了

总结读取csv文件,可以用unicodecsv包,利用unicode.DictReader方法(返回一个字典)自己定义一个read_csv()函数,传入文件名即可读取【不过直接使用pandas包更便捷,直接使用read_csv/read_table方法】

数据类型转换,加载datetime,使用strptime对文本伪时间类型转换为python的时间类型,同理转换int,灵活转化bool型的技巧

修改表格列名的方式,创建新列名,将原列传递赋值给新列明,删除原来列名

对表格的每行进行巡遍,使用for语句

python课程丶优达学城_《数据分析入门—优达学城》学习python导入数据并改正数据类型...相关推荐

  1. python学到什么程度可以写爬虫-刚开始学习 Python 到可以写出一个爬虫大约需要多长时间...

    学习 Python 的三种境界 前言王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:"昨夜西风凋碧树,独上高楼,望尽天涯路'. ...

  2. python软件工程师_为什么每个软件工程师都应该学习Python?

    python软件工程师 大家好,如果您经常关注我的博客 ,或者在HackerNoon上阅读我的文章,那么您可能想知道为什么我要写一篇文章告诉人们学习Python ? 几年前,我不是要您更喜欢Java吗 ...

  3. 大数据分析入门基础知识学什么?

    大数据分析入门基础知识学什么?做好数据分析要掌握多方面的知识和技能,软实力包括沟通能力.表达能力.设计能力等.学大数据分析需要掌握可视化分析.数据挖掘算法.预测性分析能力.语义引擎.数据质量和数据管理 ...

  4. python没英语基础能学吗_没有英语基础可以学Python吗?

    Java 和 Python 双方都有各自适合和发展的领域,所以别人常问我学习什么语言好,或者让我在两种语言进行比较好坏. 其实编程语言只有适不适合你个人去学,并不存在好坏,每种语言的存在即是合理的,你 ...

  5. python初中生有必要学吗_作为初中生该如何学编程?

    技术型人才时代,人们对自己所处的大环境有很大的认知,即没有一技之长的人很难获得企业的青睐,很难获得高薪工作,因此,人们的忧患意识也越来越强烈,学技术的年龄也越来越年轻化,比如当下有很多人就咨询:&qu ...

  6. python刚开始学什么_刚入门的时候,你们都是怎么开始学Python的呢?

    首先明确你将来是做什么工作的,需要掌握哪些技能,很多人连这个就不知道就盲目的学,你首先清楚,现在公司需要什么人才,你应该奔着什么目标努力.Python的学习方向有很多,主要还是web. 其次系统的学习 ...

  7. 零基础学python尹会生_编程零基础应当如何开始学习 Python?

    这是一篇小白自学Python的经验,针对没有任何经验.从零开始学习Python的童鞋,不管你是出于兴趣,还是想提升工作效率,或者想要转行,都可以作为一个参考. 作为过来人,先分享几点建议给你: 1.找 ...

  8. 学python还有机会吗_此时此刻,拥有一套全方面学习Python的机会是怎样一种体验?...

    当下互联网发展迅猛,对于刚刚接触python的人来说,对于学习python会感到没有方向,当你看到网上很多"漂亮"的代码,却不知道怎么才能敲出来.其实对于接触python不久的人来 ...

  9. python的简单程序代码_小白学编程?从一个简单的程序开始学习Python编程

    笔者思虑再三还是决定选择图文(因为百家的视频发布画质真不怎么样[囧]). 笔者学习编程的时间也挺长的,因为业余,因为时间不多,各种原因,自学编程的路特别难走.然后笔者发现,自己能为小白贡献一些力量,然 ...

最新文章

  1. 浏览器中的标签切换事件
  2. 【活动】侬好上海,Microsoft Reactor来啦
  3. 360文件粉碎机_中山三乡资料文件销毁粉碎销毁资料文件公司一览表
  4. roads 构筑极致用户体验_长安马自达「悦马星空」计划上线,为用户带来极致服务体验...
  5. python自动化测试脚本可以测php吗_python unittest实现api自动化测试_python
  6. 新版微软Edge浏览器:支持安装Chrome扩展
  7. 精通Android自定义View(十一)绘制篇Canvas分析之裁剪
  8. Elasticsearch Scale Out
  9. 软考信息系统项目管理师_体系介绍_证书作用价值_报考条件_考生分析---软考高级之信息系统项目管理师001
  10. Flutter进阶—网络和HTTP
  11. 讯飞输入法(原讯飞语音输入法) V2.1.1708 官方版-完美软件下载
  12. nodejs如何实现ajax,nodejs + express怎么实现Ajax方式及其简单功能
  13. 17张程序员搞笑图片
  14. MATLAB画图调整分辨率
  15. 高级钟点秘书——会议安排
  16. Android新手入门 FAQ
  17. C语言深度解剖读书笔记
  18. 中国互联网的巨头们,为何敢“大数据杀熟”?
  19. 关于java多态性之父类引用指向子类对象
  20. Linux嵌入式开发——C编程

热门文章

  1. 多目标进化优化-BiGE
  2. VS 2019 MFC CRC16校验算法例程总结(计算法/查表法以及CRC16校验表自动生成)
  3. win10安全更新导致打印机出现错误0x00000709错误
  4. 360n6手机可以刷鸿蒙系统吗,360手机N6卡刷刷机教程_360手机N6升级更新官方系统包...
  5. Latin方及Hadamard矩阵
  6. 深度学习——残差网络ResNets
  7. iOS之应用图标AppIcon和启动页LaunchImage
  8. MacPro查看WIFI密码
  9. 鸟哥笔记|运营超级用户是要激发用户的高裂变能力!
  10. 乔里斯基分解(Cholesky decomposition)