轻松学Python数据分析1-最简单实用的Pandas讲解

116 阅读6分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

pandas.png

  • 主要内容:Excel 办公自动化和数据分析
  • 适用人群:办公室职员 / Python 初学者 / 有志从事数据分析工作的人员
  • 准备内容:Anaconda-Spyder,Pandas库

学习Python,我们一定要了解Pandas这个数据分析库,生态完整、功能强大。很多人将其称为编程界的Excel,但Ofter认为这种称呼太学术了,而忽略了编程的目的。我们已经有了Excel,再用Pandas应该是对Excel的补充和提升,无法用Excel快速解决的问题,我们用Pandas来提高我们的办公效率。

虽然网上、书上已经有很多关于Pandas的教程,但是ofter抱着把Pandas讲得最完整最简单最实用的使命感,让大家真正掌握Pandas,并将其运用得炉火纯青。

1、Pandas的数据结构,即基础原理;(学习下会对后面的学习事半功倍)

2、Pandas的数据读取和生成;

3、Pandas的数据处理;(数据的清洗)

4、Pandas的数据可视化图表;

5、Pandas的项目实战。

1. 数据类型

在正式进入Pandas的内容之前,OF先给大家介绍下5个标准数据类型,因为后面所有的数据创建都会用到,有必要先了解下,如果已经熟悉了,我们就直接看 “2.数据结构” 的内容。

  • Numbers(数字):如a=1, b=2.5,Python不需要像其他一些语言定义数字类型;
  • String(字符串):如s="Officetouch"
  • List(列表):常用(列表内容允许修改,有序的对象集合),用 [ ] 标识,如['Office', 't', 'o', 'u', 'c', 'h']
  • Tuple(元组):不常用(元组内容不允许修改,有序的对象集合),用 () 标识,如('Office', 't', 'o', 'u', 'c', 'h')
  • Dictionary(字典):常用(字典内容允许修改,无序的对象集合),由索引(key)和它对应的值value组成,用{ }标识,如{'code': 'OF', 'name': 'Officetouch'}

补充知识点:字符串、列表和元组的数据类型的索引知识,如下图:

(python的索引遵循左闭右开原则)

1) 我们先用代码验证下从左到右索引:

s="Officetouch"
print(s[1:3])

运行结果:

ff

大家可以看到右边索引3对应的字符“i”并未显示,这就是开的含义。

2) 我们再用代码验证下从右到左索引:

s="Officetouch"
print(s[-9:-1])

运行结果:

ficetouc

2. 数据结构 - Series

与Numpy数组不同,Pandas数组可存储非数值型数据,例如字符串。我们现在开始讲解Pandas 的主要数据结构: Series (一维数据)与 DataFrame(二维数据)。

Series:类似于一维数组,就是一列数据如[1, 'office', 'touch'],该函数有5个参数。

pandas.Series(data,index,dtype,name,copy)

参数说明:

  • data:一组数据(ndarray 类型),必填。
  • index:数据索引标签,如果不指定,默认从 0 开始,非必填。
  • dtype:数据类型,默认会自己判断,非必填。
  • name:设置名称,非必填。
  • copy:拷贝数据,默认为 False,非必填。

创建Series有两种方式:1)列表;2)字典。(没错,就是第2部分介绍的)

方式1)列表:

import pandas as pd
t2 = pd.Series([1, 'office', 'touch', 2], index=list('ABCD'), name="OF")
print(t2)

运行结果:

A         1
B    office
C     touch
D         2
Name: OF, dtype: object

方式2)字典:

import pandas as pd
t1 = pd.Series({"A":1,'B':'office','C':'touch','D':2},name='OF')
print(t1)

运行结果:

A         1
B    office
C     touch
D         2
Name: OF, dtype: object

3. 数据结构 - DataFrame

可能有些学员会问学这个数据类型->Series,好像工作生活上也没什么场景会用到这种吧。生活中的场景远比这些基础的内容复杂,以上的这些知识都是为了给生活中常用的二维数据DataFrame打基础。DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。

DataFrame 构造方法如下:

pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

  • data:一组数据(ndarray,series, map, lists, dict 等类型),必填。
  • index:索引值,或者可以称为行标签,非必填。
  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) ,非必填。
  • dtype:数据类型,非必填。
  • copy:拷贝数据,默认为 False,非必填。

创建DataFrame的方式主要有3种:1)列表;2)字典;3)ndarray(n维数组)。

比如我们想建一个人员信息的表格,有3列分别为:工号,姓名,年龄。

方式1)列表: ['Office', 'touch']是列表,那么多行的列表集合就是将这些列表再[]起来

import pandas as pd


data1 = [['1001','张三',20],['1002','李四',22],['1003','赵武',21]]
col1 = ['工号','姓名','年龄']
df1 = pd.DataFrame(data=data1,columns=col1)
print(df1)

方式2)字典:

import pandas as pd


data2 = [{'工号': '1001', '姓名': '张三', '年龄':'20'},{'工号': '1002', '姓名': '李四', '年龄':'22'},{'工号': '1003', '姓名': '赵武', '年龄':'21'}]
df2 = pd.DataFrame(data2)
print (df2)

方式3)ndarray:

import pandas as pd


data3 = {'工号':['1001', '1002', '1003'], '姓名':['张三', '李四', '赵武'], '年龄':['20', '22', '21']}
df3 = pd.DataFrame(data3)
print (df3)

3种方式的运行结果:

     工号  姓名  年龄
0  1001  张三  20
1  1002  李四  22
2  1003  赵武  21

相信很多学员经常看到loc这个属性,那么OF今天也和大家介绍下loc的用法,Pandas 可以使用 loc 属性返回指定行的数据:

import pandas as pd


data1 = [['1001','张三',20],['1002','李四',22],['1003','赵武',21]]
col1 = ['工号','姓名','年龄']
df1 = pd.DataFrame(data=data1,columns=col1)
print(df1.loc[1]) #返回第2行的数据

运行结果:返回结果其实就是一个 Series 数据

工号    1002
姓名      李四
年龄      22
Name: 1, dtype: object

也可以返回多行数据,使用  [[ ... ]]  格式, ...  为各行的索引,以逗号隔开:

import pandas as pd


data1 = [['1001','张三',20],['1002','李四',22],['1003','赵武',21]]
col1 = ['工号','姓名','年龄']
df1 = pd.DataFrame(data=data1,columns=col1)
print(df1.loc[[0,1,2]]) #返回第1,2,3行的数据,我们也可以这么写df1.loc[0:2]

运行结果:

     工号  姓名  年龄
0  1001  张三  20
1  1002  李四  22
2  1003  赵武  21

4. 结 语

今天ofter所讲的内容挺重要的,只有基础越扎实,上层建筑才能建得更完美。下期我们会尽快更新如下内容,让大家能尽快感受到数据分析实战的乐趣。

2、Pandas的数据读取和生成;

3、Pandas的数据处理;(数据的清洗)

4、Pandas的数据可视化图表;

5、Pandas的项目实战。