大家好,我是大鹏,城市数据团联合发起人,致力于Python数据分析、数据可视化的应用与教学。

和很多同学接触过程中,我发现自学Python数据分析的一个难点是资料繁多,过于复杂。大部分网上的资料总是从Python语法教起,夹杂着大量Python开发的知识点,花了很多时间却始终云里雾里,不知道哪些知识才是真正有用的。本来以为上手就能写爬虫出图,却在看基础的过程中消耗了一周又一周,以至于很多励志学习Python的小伙伴牺牲在了入门的前一步。

于是,我总结了以下一篇干货,来帮助大家理清思路,提高学习效率。总共分为三大部分:做Python数据分析必知的语法,如何实现爬虫,怎么做数据分析。

1.必须知道的两组Python基础术语

A.变量和赋值

Python可以直接定义变量名字并进行赋值的,例如我们写出a = 4时,Python解释器干了两件事情:

在内存中创建了一个值为4的整型数据

在内存中创建了一个名为a的变量,并把它指向4

用一张示意图表示Python变量和赋值的重点:

例如下图代码,“=”的作用就是赋值,同时Python会自动识别数据类型:

a=4 #整型数据

b=2 #整型数据

c=“4” #字符串数据

d=“2” #字符串数据

print(“a+b结果为”,a+b)#两个整数相加,结果是6

print(“c+d结果为”,c+d)#两个文本合并,结果是文本“42”

#以下为运行结果

>>>a+b结果为 6

>>>c+d结果为 42

B.数据类型

在初级的数据分析过程中,有三种数据类型是很常见的:

列表list(Python内置)

字典dic(Python内置)

DataFrame(工具包pandas下的数据类型,需要import pandas才能调用)

它们分别是这么写的:

列表(list):

#列表

liebiao=[1,2.223,-3,'刘强东','章泽天','周杰伦','昆凌',['微博','B站','抖音']]

list是一种有序的集合,里面的元素可以是之前提到的任何一种数据格式和数据类型(整型、浮点、列表……),并可以随时指定顺序添加其中的元素,其形式是:

#ist是一个可变的有序表,所以,可以往list中追加元素到末尾:

liebiao.append('瘦')

print(liebiao)

#结果1

>>>[1, 2.223, -3, '刘强东','章泽天','周杰伦','昆凌', ['微博','B站','抖音'],'瘦']

#也可以把元素插入到指定的位置,比如索引号为5的位置,插入“胖”这个元素:

liebiao.insert(5,'胖')

print(liebiao)

#结果2

>>>[1, 2.223, -3, '刘强东','章泽天','胖','周杰伦','昆凌', ['微博','B站','抖音'],'瘦']

字典(dict):

#字典

zidian={'刘强东':'46','章泽天':'36','周杰伦':'40','昆凌':'26'}

字典使用键-值(key-value)存储,无序,具有极快的查找速度。以上面的字典为例,想要快速知道周杰伦的年龄,就可以这么写:

zidian['周杰伦']

>>>'40'

dict内部存放的顺序和key放入的顺序是没有关系的,也就是说,"章泽天"并非是在"刘强东"的后面。

DataFrame:

DataFrame可以简单理解为Excel里的表格格式。导入pandas包后,字典和列表都可以转化为DataFrame,以上面的字典为例,转化为DataFrame是这样的:

import pandasaspd

df=pd.DataFrame.from_dict(zidian,orient='index',columns=['age'])#注意DataFrame的D和F是大写

df=df.reset_index().rename(columns={'index':'name'})#给姓名加上字段名

和excel一样,DataFrame的任何一列或任何一行都可以单独选出进行分析。

以上三种数据类型是python数据分析中用的最多的类型,基础语法到此结束,接下来就可以着手写一些函数计算数据了。

2.从Python爬虫学循环函数

掌握了以上基本语法概念,我们就足以开始学习一些有趣的函数。我们以爬虫中绕不开的遍历url为例,讲讲大家最难理解的循环函数for的用法:

A.for函数

for函数是一个常见的循环函数,先从简单代码理解for函数的用途:

zidian={'刘强东':'46','章泽天':'36','周杰伦':'40','昆凌':'26'}

forkeyinzidian:

print(key)

>>>

刘强东

章泽天

周杰伦

昆凌

因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不是每次都一样。默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时#迭代key和value,可以用for k, v in d.items()

可以看到,字典里的人名被一一打印出来了。for 函数的作用就是用于遍历数据。掌握for函数,可以说是真正入门了Python函数。

B.爬虫和循环

for函数在书写Python爬虫中经常被应用,因为爬虫经常需要遍历每一个网页,以获取信息,所以构建完整而正确的网页链接十分关键。以某票房数据网为例,他的网站信息长这样:

该网站的周票房json数据地址可以通过抓包工具找到,网址为http://www.cbooo.cn/BoxOffice/getWeekInfoData?sdate=20190114

仔细观察,该网站不同日期的票房数据网址(url)只有后面的日期在变化,访问不同的网址(url)就可以看到不同日期下的票房数据:

我们要做的是,遍历每一个日期下的网址,用Python代码把数据爬下来。此时for函数就派上用场了,使用它我们可以快速生成多个符合条件的网址:

import pandasaspd

url_df = pd.DataFrame({'urls':['http://www.cbooo.cn/BoxOffice/getWeekInfoData?sdate='foriinrange(5)],'date':pd.date_range(20190114,freq ='W-MON',periods = 5)})

'''

将网址相同的部分生成5次,并利用pandas的时间序列功能生成5个星期一对应的日期。

其中用到了***部分提供的多个数据类型:

range(5)属于列表,

'urls':[]属于字典,

pd.dataframe属于dataframe

'''

url_df['urls'] = url_df['urls'] + url_df['date'].astype('str')

滑动滑块可以看到完整代码和中间的注释。

为了方便理解,我给大家画了一个for函数的遍历过程示意图:

此处省略掉后续爬取过程,相关爬虫代码见文末。我们使用爬虫爬取了5800+条数据,包含20个字段,时间囊括了从2008年1月开始至2019年2月十一年期间的单周票房、累计票房、观影人次、场均人次、场均票价、场次环比变化等信息。

3.Python怎么实现数据分析?

除了爬虫,分析数据也是Python的重要用途之一,Excel能做的事,Python究竟怎么实现呢;Excel不能做的事,Python又是否能实现呢?利用电影票房数据,我们分别举一个例子说明:

A.Python分析

在做好数据采集和导入后,选择字段进行初步分析可以说是数据分析的必经之路。在Dataframe数据格式的帮助下,这个步骤变得很简单。

比如当我们想看单周票房***的排名分别都是哪些电影时,可以使用pandas工具库中常用的方法,筛选出周票房为***名的所有数据,并保留相同电影中周票房***的数据进行分析整理:

import pandasaspd

data = pd.read_csv('中国票房数据爬取测试20071-20192.csv',engine='python')

data[data['平均上座人数']>20]['电影名']

#计算周票房***随时间变化的结果,导入数据,并选择平均上座人数在20以上的电影为有效数据

dataTop1_week = data[data['排名']==1][['电影名','周票房']]

#取出周票房排名为***名的所有数据,并保留“电影名”和“周票房”两列数据

dataTop1_week = dataTop1_week.groupby('电影名').max()['周票房'].reset_index()

#用“电影名”来分组数据,相同电影连续霸榜的选择***的周票房保留,其他数据删除

dataTop1_week = dataTop1_week.sort_values(by='周票房',ascending=False)

#将数据按照“周票房”进行降序排序

dataTop1_week.index= dataTop1_week['电影名']

del dataTop1_week['电影名']

#整理index列,使之变为电影名,并删掉原来的电影名列

dataTop1_week

#查看数据

9行代码,我们完成了Excel里的透视表、拖动、排序等鼠标点击动作。***再用Python中的可视化包matplotlib,快速出图:

B.函数化分析

以上是一个简单的统计分析过程。接下来就讲讲Excel基础功能不能做的事——自定义函数提效。观察数据可以发现,数据中记录了周票房和总票房的排名,那么刚刚计算了周票房排名的代码,还能不能复用做一张总票房分析呢?

当然可以,只要使用def函数和刚刚写好的代码建立自定义函数,并说明函数规则即可:

def pypic(pf):

#定义一个pypic函数,变量是pf

dataTop1_sum = data[['电影名',pf]]

#取出源数据中,列名为“电影名”和pf两列数据

dataTop1_sum = dataTop1_sum.groupby('电影名').max()[pf].reset_index()

#用“电影名”来分组数据,相同电影连续霸榜的选择***的pf票房保留,其他数据删除

dataTop1_sum = dataTop1_sum.sort_values(by=pf,ascending=False)

#将数据按照pf进行降序排序

dataTop1_sum.index= dataTop1_sum['电影名']

del dataTop1_sum['电影名']

#整理index列,使之变为电影名,并删掉原来的电影名列

dataTop1_sum[:20].iloc[::-1].plot.barh(figsize = (6,10),color = 'orange')

name=pf+'top20分析'

plt.title(name)

#根据函数变量名出图

定义函数后,批量出图so easy:

学会函数的构建,一个数据分析师才算真正能够告别Excel的鼠标点击模式,迈入高效分析的领域。

【编辑推荐】

【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0

数据分析 python 用途-Python 从爬虫到数据分析相关推荐

  1. Python网易云音乐爬虫大数据分析可视化系统——大屏数据可视化开发之路

    介绍 现在比较流行的大数据数据可视化都是大屏,有钱的人会使用阿里云全家桶的DataV或者商业化的大屏解决方案,但是在国内还是小公司比较多,本人50年大数据开发经验,精通数据可视化,曾经处理过百万亿级别 ...

  2. python毕业设计课题-毕业设计:爬虫及数据分析

    本科阶段即将落幕,我本科最后一项任务毕业设计也进入尾声. 指导老师跟我说,本科毕业设计不需要创新,但是工作量一定要够,我就知道又要搞事情了. 我选择的毕业设计题目是网络爬虫与数据分析,在当下可以说很时 ...

  3. 数据分析 python 用途-python数据统计分析

    1. 常用函数库 scipy包中的stats模块和statsmodels包是python常用的数据分析工具,scipy.stats以前有一个models子模块,后来被移除了.这个模块被重写并成为了现在 ...

  4. python 用途-python主要用途

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 获取 python 版本的方法:linux shell$python - ...

  5. python 用途-Python在每个行业的用处

    Python 交互式的开发环境,因为Python是解释运行,这样也很大的节省编译时间.Python语法也很简单,又有几种高级数据结构,如list列表.元组等,通过使用这些数据结构起来特别简单.Pyth ...

  6. python 用途-python中的*和**的用途

    def function_with_one_star(*t): print(t, type(t)) def function_with_two_stars(**d) print(d, type(d)) ...

  7. Python 爬虫和数据分析实战

    课程介绍 本课程以一个小项目带你快速上手 Python 爬虫和数据分析,主要分 3 部分: 第 1 部分是 Python 爬虫,主要使用 Urllib 3 和 BeautifulSoup 抓取天猫商城 ...

  8. Python入门 Python自学路线 Python如何学习

    本文介绍Python入门 Python自学路线 Python如何学习.先说点题外话吧:首先呢,我刚开始接触编程的时候,学的是C,那时候Python还没有这么火,后来学了C++,PHP,Java,前端. ...

  9. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章

    原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...

最新文章

  1. 计算机专业it职业英语作文,英文简历范文:计算机专业
  2. 实战教程 | 车道线检测项目实战,霍夫变换 新方法 Spatial CNN
  3. html+引导,html – 引导点的CSS样式
  4. linux pytorch环境配置,linux下使用conda安装pytorch,并配置pytorch
  5. mysql什么格式转换_MySQL日期格式转换
  6. jquery文本折叠
  7. loj2090. 「ZJOI2016」旅行者
  8. 使用mp4v2将aac音频h264视频数据封装成mp4开发心得
  9. 使用Python配合Evernote完成每周工作安排
  10. 利用React 和ant-design 搭建cnode项目的随笔
  11. 中兴捧月算法挑战赛-RAW夜景图像去噪总结
  12. 疯狂的程序员_戴蓓会客厅第13期|疯狂的程序员 三维家蔡志森的野心
  13. 笔记本计算机的连接无线网络连接,笔记本电脑怎么连无线_笔记本电脑连wifi怎么连-win7之家...
  14. java 运算符的讲解
  15. Django 实现搜索结果分页(筛选结果分页),以及优雅添加多个筛选条件
  16. jscript经典(待整理)
  17. 时刻盯着手机的人,却没有近视一说,就是因为这两个小秘诀(公益分享类文章)
  18. Matlab函数fir1(n,Wn)中的归一化频率的含义
  19. 实验吧web题(26/26)全writeup!超详细:)
  20. 带你由浅入深探索webpack4(二)

热门文章

  1. java统计 pv uv_统计PV、UV的新武器——Aviator
  2. 开发日记 20210316
  3. 开发日记-20190612 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  4. linux查看硬件信息
  5. bzoj 3687: 简单题
  6. 这段时间没有好好的总结了
  7. jQuery 遍历后代
  8. EOS/普元:中国IT业的悲哀
  9. Android模拟器emulator-arm.exe出现错误
  10. 每天OnLineJudge 之 “杨辉三角 ”