专栏名称: 爱数据原统计网
中国统计网(www.itongji.cn),国内最大的数据分析门户网站。提供数据分析行业资讯,统计百科知识、数据分析、商业智能(BI)、数据挖掘技术,Excel、SPSS、SAS、R等数据分析软件等在线学习平台。
目录
相关文章推荐
51好读  ›  专栏  ›  爱数据原统计网

如何快速学会Python处理数据?(5000字走心总结)

爱数据原统计网  · 公众号  · BI  · 2021-03-09 16:30

正文


大家好,我是大师兄。

很多同学抱怨自己很想学好Python,但学了好久,书也买不少,视频课程也看了不少,但是总是学了一段时间,感觉还是没什么收获,碰到问题没思路,有思路写不出多少行代码,遇到报错时也不知道怎么处理。


从入门到放弃,这是很多学习python的同学常常挂在嘴边上的口头禅。今天我分享一些自己学习Python的心得,并用一个案例来说明python解决问题的基本思路和框架。


01

如何学好Python

01

明确自己的需求

听到别人说Python很牛很厉害,也想跟着学,这样的人肯定是学不好python的。没有明确的需求和动力,就会导致你学python两天打鱼三天晒网,没有恒心也没有决心。

假如你有明确的需求,比如:
  • 老板让我1周内完成一个数据分析报告
  • 老板让我1个月内搭建一个自己的blog网站
  • 我要处理很多excel文件,我想写一个脚本帮我自动处理
  • 我每天都在手动审核数据质量,我想写一个脚本代替我的日常工作
  • .......

当你面对这样一些需求时,你还无法求助他人帮忙时,这个时候,你就必须学习Python来帮你处理了。

02

明确Python的学习方向

Python的学习方向有很多,比如:
  • WEB方向
  • GUI方向
  • 数据处理方向
  • 数据分析方向
  • 人工智能方向
  • ......

我是日常用Python主要做数据处理和数据分析工作,所以我选择的是数据处理和数据分析方向,其他Python功能接触的比较少。

03

掌握Python的基本语法

  • import模块导入方法
  • 变量及基本数据类型
  • 循环和条件基本控制语句
  • 模块内嵌函数和自定义函数
  • ......

不管你选择了什么方向,Python的基本语法是必须掌握的。对于没有编程经验的人,Python是一门非常适合入门的编程语言,因为它是高度封装的,不需要对于底层特别了解,也能够很好学习使用。python语法非常简单,代码可读性高,对于零基础的人来说更容易接受和使用。

04

掌握Python

数据处理方法

  • 线性代数和统计学
  • Pandas/Numpy/Matplotlib模块
  • 数据导入、存储
  • 数据清洗和准备
  • 数据规整:连接、联合、重塑
  • 数据整合和分组操作
  • 时间序列数据操作
  • 绘图和可视化

利用Python做数据处理,线性代数和统计学这两门基本理论知识还是要会点,线性代数你至少得需要知道矩阵和矩阵运算规则,统计学你至少要知道描述性统计。

常用的Python数据处理模块有Pandas和Numpy这两个,这是必须要掌握的,另外,Matplotlib模块是数据可视化模块,也是必须会的。

数据导入、清洗和准备、规整、分组等操作,都是数据处理中常用的方法,平常对比Excel数据操作,Python都可以实现,而且一行简单的代码,就可以操作比较复杂的数据处理方法。

05

多练!多练!多练!

  • 自己找些小作业练习
  • 解决平常工作中的问题
  • 可以尝试输出文章

重要的事情说三遍,多练!多练!多练!

Python和数据分析都是实践学科,光学理论,不练习,是不会有任何收获的,学完之后不练就忘掉了。最好的方式,就是先掌握一点基础语法,然后把Python融合到工作中,解决日常工作中碰到的问题。在解决问题的时候,你会碰到各种问题,可以去"百度"寻找答案。最后,要定期总结和输出。

特别提示,假如你没有基础或者基础薄弱的话,建议工作期间不要尝试用Python解决复杂的问题,这是一个很浪费时间的事情,中间各种问题,会让你崩溃。最终Python没学好,还耽误了工作。所以,要利用工作之余的时间,把python基础打扎实。

02

Python数据处理示例

01

安装并搭建

Python环境

首先,需要安装python,我要推荐Anaconda3,从事数据分析的伙伴们,严重推荐此软件!

Anaconda降低了数据分析初学者的学习门槛,因为这个软件自带了python中大概有1000多个数据科学包,让你无需单独学习每个库的安装方法。另外,还自带了Jupter notebook代码编译器。现在,Anaconda和Jupyter notebook已成为数据分析的标准环境。

具体的安装方法参考如下链接:
https://mp.weixin.qq.com/s/53-KvHGYqCSx8qtUnub_vw

安装完成后,打开Jupter Notebook,就可以在上面输入代码。

02

问题说明

现在工作中面临一个批量化文件处理的问题:就是要把每个二级文件下csv文件合并到一个数据表里,同时要在最终的数据表里增加两列,一列是一级文件目录名称,另一列是二级文件目录名称。

  • 总共有105个一级文件目录
  • 每个一级文件下有若干个二级文件
  • 每个二级文件下有若干个csv格式的数据

当工作中,碰到这样的问题时,我用最笨拙的方法——人工,一个一个文件整理,但是效率比较低,可能需要一个人一天的工作量。当然,我也可以寻找技术的帮忙,找一个Java工程师,这个问题也很容易解决,但麻烦别人一次,没问题。以后碰到类似的问题,总是麻烦,就不好了。假如自己掌握了Python,这个问题就变得很简单了。

03

程序实现

其实这个问题,对于一个专业的Python程序员来说,是一个再简单不过的问题。但是对于一个初学者来说,要解决这个问题,恐怕需要费一点时间和脑力。

编程之前,我是如何思考的:
1、首先,要读取文件名称,需要引入OS模块下的listdir函数
2、其次,遍历所有一级、二级、三级文件名称,需要用到for循环和循环嵌套
3、然后,读取文件下csv表,需要用到pandas模块下的read_csv函数
4、最后,整理合并后的所有表,需要用到DataFrame的操作方法

实现代码如下:
#导入模块
import os
import pandas as pd

##定义一个读取文件名的函数
def readname(a):
    filePath="D:\\\\ad_data\\\\"+a+"\\\\"
    name=os.listdir(filePath)
    return name

#声明初始变量
a=""
name= readname(a)
data_new =pd.Dataframe()

#循环遍历文件名称
for i in name:
    name1=readname(i)
    for j in name1:
        file_path = "D:\\\\ad_data\\\\"+i+"\\\\" +j+"\\\\"
        name3=os.listdir(file_path)
        for t in name3:
            csv_path = "D:\\\\ad_data\\\\"+i+"\\\\"+j+"\\\\"+t
            data=pd.read_csv(csv_path)
            data['广告主']=i
            data['行业']=j
            f = lambda x:x[0:7]
            data['日期']=data['日期'].apply(f)
            data['投放费用']=data['投放费用']/10000
            data=data.drop(columns=['行业排名'])
            data_new=data_new.append(data)
#导出数据
file = os.getcwd() + '\\ad.csv'
data_new.to_csv(file, index=False,encoding='utf_8_sig')

这段代码虽然简单,但基本攘括了Python的大部分基本语法,接下来我带大家一一解剖下这些基本语法。

  • import语句
  • 声明变量
  • 数据导入和导出
  • 循环和嵌套循环
  • 模块函数调用
  • 自定义函数
  • Lambda表达式
  • Dataframe及操作

03

Python基本语法详解

01

import详解

下面程序使用导入整个模块的最简单语法来导入指定模块:
import os #导入OS模块
import pandas as pd #导入pandas模块

使用Python进行编程时,有些功能没必须自己实现,可以借助Python现有的标准库或者其他人提供的第三方库。像OS和pandas,都是标准库,导入后,就可以在程序中使用其模块内的函数,使用时必须添加模块名作为前缀。
name3=os.listdir(file_path) #导入os模块下的listdir函数

假如模块名长,就可以取别名,比如pandas模块,取别名为pd。像os模块,由于比较简短,就没有取别名。别名的作用,就是调用该模块下的函数时,减少代码的复杂度。
import pandas as pd
data=pd.read_csv(csv_path)

02

数据导入和导出

数据的导入是数据处理和分析的第一步,日常我使用的比较多的是利用pandas进行数据输入和输出,尽管其他库中也有许多工具可帮助我们读取和写入各种格式的数据。

将表格型数据读取为DataFrame对象是pandas的重要特性
  • read_csv(csv文件输入函数)
  • read_table(文本文件输入函数)
  • to_csv(数据输出函数)
#遍历所有文件路径,读取所有文件下csv文件数据
csv_path = "D:\\\\ad_data\\\\"+i+"\\\\"+j+"\\\\"+t
data=pd.read_csv(csv_path)
当然,数据的输入,也有与数据库交互读取数据,也有与WEB API交互读取数据,这个是属于进阶的内容,后期带大家学习。

03

声明变量

变量是Python语言中一个非常重要的概念,其作用就是为Python程序中的某个值起一个名字。类似于"张三"、"李四"一样的名字。在Python语言中,声明变量的同时需要为其赋值,毕竟不代表任何值的变量毫无意义。
a="" #声明一个空字符类型
data_new =pd.Dataframe() #声明一个空数据集格式

声明变量非常简单,语法结构:等号(=)左侧是变量名,右侧是变量值,Python编译器会自动识别变量的数据类型。

说到变量,就不得不谈Python的基本数据类型,Python有6个标准的数据类型:
  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

学习Python,掌握其基本数据类型,特别重要!重要!重要!详细的介绍,见:
https://www.runoob.com/python3/python3-data-type.html

04

控制语句

我们所见到的程序,有很多程序都是按照顺序从上到下执行它们。如果你想要改变语句流的执行顺序,也就是说你想让程序做一些决定,根据不同的情况做不同的事情。这个时候,就需要通过控制流语句来实现。

在Python中有三种控制流语句——if、for和while。详细的知识点,见如下:

if语法讲解
https://www.runoob.com/python/python-if-statement.html

while语法讲解
https://www.runoob.com/python/python-while-loop.html

for语法讲解
https://www.runoob.com/python/python-for-loop.html

嵌套for语法讲解
https://www.runoob.com/python/python-nested-loops.html

本次实例中,需要读取一级文件目录名称、二级文件目录名称、三级csv文件目录名称,并逐个遍历它,于是选择了for循环。for循环就是个迭代器,当我们在使用for循环时,即重复运行一个代码块,或者不断迭代容器对象中的元素,比如一些序列对象,列表,字典,元组,甚至文件等,而for循环的本质取出可迭代对象中的迭代器然后对迭代器不断的操作。
for i in name: #第一层循环,读取一级文件目录名称
    for j in name1: #第二层循环,读取二级子文件目录名称
        for t in name3: #第三层循环,读取csv文件目录名称

05

模块函数调用

函数是组织好的,可重复使用的,用来实现单一、或者相关功能的代码段。

函数能提高程序的模块性,和代码的重复利用率。Python提供了许多标准模块的内建函数,比如os模块下的listdir函数,用来读取文件的名称,pandas模块下的read_csv函数,用来读取csv文件的数据。当然,也可以自己创建函数,也就是所谓的自定义函数,下一节详细讲。
import os #导入OS模块
import pandas as pd #导入pandas模块
name=os.listdir(filePath) #调用os模块下的listdir函数
data=pd.read_csv(csv_path) #调用pandas模块下的read_csv函数

06

自定义函数

我们可以自定义一个自己想要的功能函数,通常遵循以下规则:

  • 函数代码块以def关键词开头,后接圆括号()和参数。






请到「今天看啥」查看全文