以下文章来自我的好友,城市数据团的大鹏。

大家好,我是大鹏,致力于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

请阅读代码块里的代码和注释,你会发现Python是及其易读易懂的。

B.数据类型

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

  • 列表list(Python内置)

  • 字典dict(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 pandas as pd

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'}for key in zidian:
        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 pandas as pd
url_df = pd.DataFrame({'urls':['http://www.cbooo.cn/BoxOffice/getWeekInfoData?sdate=' for i in range(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 pandas as pddata = 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的鼠标点击模式,迈入高效分析的领域

4.光看不练是永远不能入门的

如果只有一小时学习,以上就是大家一定要掌握的Python知识点。光看不练永远都会是门外汉,如果你有兴趣学习Python数据分析,却在过程中感到困惑,欢迎来参加我在网易云课堂的免费直播,每晚一个主题,有学有练,让你快速入门Python数据分析:

不间断直播陪你从入门到精通

扫码即可预约免费直播席位(限前100)

01

Python免费直播课,每周放送

第一场  5月20日 周一 晚上8点(可回看)

《初学者必看:一定需要规避的Python学习误区》

1. Python基础语法学习路径

2. 十大易错点分别是哪些?

3. 初步用Python实现数据清洗

第二场  5月21日 周二 晚上8点(可回看)

《用Python处理文本数据:星座运势分析》

1. Python处理文本数据

2. Pandas处理文本数据方法

3. 案例实现:星座运势文本数据处理

第三场  5月22日 周三 晚上8点

《用Python做词云图:中国电影十年票房分析》

1.中国票房数据采集

2.票房排名及上榜电影分析

3.用词云图看看票房评价关键字

第四场  5月23日 周四 晚上8点

《超级干货:手把手教可视化工具Tableau》

1.什么是商业智能?

2.Tableau介绍及基础操作

3.基于Tableau的数据可视化套路

直播预约方式

扫码即可预约免费直播席位(限前100)

02

一周免费课程

配练习材料

课程大纲

1. Python语言入门

2. 每月净收入模型构建

3. 每月支出模型构建

4. 不同情况下的花呗还款场景模拟

5. 负债积累问题

6. 如何用图表讲好一个故事?(彩蛋)

03

学习资料包,入门有方向

04

福利获取方式

所有以上福利,扫码添加网易云课堂小助手即可获得

微信号:neteasepython1

席位有限,先到先得

python dataframe的某一列变为list_手把手教你用Python爬中国电影票房数据相关推荐

  1. 手把手教你用Python爬中国电影票房数据

    我发现自学Python数据分析的一个难点是资料繁多,过于复杂.大部分网上的资料总是从Python语法教起,夹杂着大量Python开发的知识点,花了很多时间却始终云里雾里,不知道哪些知识才是真正有用的. ...

  2. python爬虫实战三:近十年中国电影票房数据爬取与分析

    近十年中国电影票房数据爬取与分析 前言 爬取 分析 十年top10 年度top5 每年电影数 每年总票房 二八原则 代码与数据 前言 这篇文章主要讲述的是近十年(2010-2019)中国电影票房数据的 ...

  3. python代码在线回归中怎么运行_手把手教你用Python进行回归(附代码、学习资料)...

    原标题:手把手教你用Python进行回归(附代码.学习资料) 作者: GURCHETAN SINGH翻译:张逸校对:丁楠雅 本文共5800字,建议阅读8分钟. 本文从线性回归.多项式回归出发,带你用P ...

  4. 使用python爬取中国电影票房数据并写入csv文件

    环境 PyCharm 2021.1.2 x64 爬取的目标网页 一.代码 import requests from bs4 import BeautifulSoup url = "http: ...

  5. python新手入门代码-新手必看:手把手教你入门 Python

    原标题:新手必看:手把手教你入门 Python 本文为 AI 研习社编译的技术博客,原标题 : Learning Python: From Zero to Hero 翻译 |永恒如新的日常校对 | 酱 ...

  6. python 儿童 游戏_少儿编程分享:手把手教你用Python编写战斗机游戏(完)

    原标题:少儿编程分享:手把手教你用Python编写战斗机游戏(完) 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑 .接下来,我们要把单调的白色矩形换成好看的图片. 在前面的代码中,我们用 ...

  7. 怎么用python做战斗机_少儿编程分享:手把手教你用Python编写战斗机游戏(四)

    游戏分享:手把手教你用Python编写 战斗机游戏(四) 2018.1.25 飞机大战就到这里啦 你的飞机大战做出来了吗 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑.接下来,我们要把单 ...

  8. 用python画小兔子_少儿编程分享:手把手教你用PYTHON编写兔獾大作战(一)

    原标题:少儿编程分享:手把手教你用PYTHON编写兔獾大作战(一) 游戏制作 我们今天要制作的小游戏是Bunnies vs. Badgers (兔獾大作战).游戏中的兔子通过射箭抵御獾的进攻,从而保卫 ...

  9. python dataframe的某一列变为list_Pandas某一列是列表,怎么展开呢?

    问题来了 又是下午,昏昏欲睡.翻起了之前遇到的一个奇怪的需求,具体细节记不得了,只记得小姐姐当时一脸严肃的说,我这儿有一堆数据,某一列可能是列表,你把他们展开,一会儿给我.当时我还一脸懵逼,回味了很久 ...

  10. python dataframe的某一列变为list_Python数据分析系列文章之Pandas(上)

    本篇是[机器学习与数据挖掘]头条号原创首发Python数据分析系列文章的第三篇 Python数据分析系列文章之Python基础篇 Python数据分析系列文章之Numpy Python数据分析系列文章 ...

最新文章

  1. 吴恩达deeplearning.ai五项课程完整笔记了解一下?
  2. Python工具 | 4个好用的开源 Python 下载器
  3. ACM中java的使用
  4. 成功解决TypeError: fit_transform() takes 2 positional arguments but 3 were given
  5. 一招让你拿下seata分布式事务框架,看这篇文章准没错!
  6. mysql清空数据表信息
  7. 《System语言详解》——1.SystemTap概述
  8. 按键精灵一个命令学会这么厉害
  9. Android Studio中AndroidManifest.xml文件中application标签
  10. android studio无法连接小米手机问题解决
  11. Win7快速启动栏恢复方法
  12. 测试知识 - 关于电脑
  13. LoRaAN终端OTAA入网方式的详细介绍
  14. 用STM32CubeMX生成STM32F407ZG + LAN8720A 的LWIP
  15. 最长公共子序列(LCS)C++版递归算法实现
  16. Linux 文件系统类型 文件系统结构 与Windows文件系统的比较
  17. php读这文件速度,ASP和PHP文件操作速度的对比
  18. mysql 定时任务编写
  19. 四则运算(二叉树实现) Java
  20. Verilog基本语法——模块

热门文章

  1. 没能躲开的云服务容器网络问题
  2. 在线支付接口详解、支付接口对接
  3. 使用阿里云接口进行银行卡三四要素实名认证(阿里云api接口java)
  4. 计算机平面设计与工程论文,计算机平面设计毕业论文范文2篇
  5. 批量语音转文字python
  6. ADNI数据集相关概念初步整理
  7. git官网下载太慢解决方法
  8. Windows 10系统System进程占用CPU过高怎么处理?
  9. Win10系统磁盘分区图文教程
  10. Simhash算法介绍和应用内容