第四章
数据处理与应用
1、常用表格数据的处理
2、大数据处理
3、大数据典型应用
人生苦短
我用python
学习目标:
1、了解Python常用扩展模块的功能。
2、掌握pandas模块的调用方法、数据结构等基本知识。
3、能使用pandas模块对数据进行编辑、计算和统计分析,并能从中提取有用信息形成结论。
4、掌握matplotlib模块的调用方法和使用matplotlib模块对数据进行可视化的基本方法。
还记得吗?
python模块的导入——import
一个程序中已出现的一个或多个函数或模块,引入到另一个python代码中,从而实现代码的复用。语法如下:
import 模块名
模块名.函数名
from 模块名 import 函数名
python模块的小名儿
import 还有更多详细的用法,主要有以下两种:导入整个模块时,也可以为模块指定别名。
import 模块名1 [as 别名1]…
例如:import sys as s
print(s.argv[0])
from 模块名 import 成员名1 [as 别名1],…
例如:from sys import argv as v
print(v[0])
pandas处理数据
数据处理可以使用现成的软件或平台,也可以通过编写程序实现。Python语言丰富的标准模块和扩展库提供了许多高效灵活的函数,可以帮助我们较好地进行数据整理。
pandas数据结构
1. Series(序列)
Series类似于一维数组,由一个数组的数据和一个与数据关联的索引(index),索引值默认是从0起递增的整数。
{5940675A-B579-460E-94D1-54222C63F5DA}from pandas import Series #导入pandas库中Series模块
pds1 = Series([1, 2, 3, 4])
pds1
0 1
1 2
2 3
3 4
左列:index
右列:values
pandas数据结构
通过指定索引的方式
{5940675A-B579-460E-94D1-54222C63F5DA}pds2 = Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
pds2
a 1
b 2
c 3
d 4
pandas数据结构
通过字典方式创建
{5940675A-B579-460E-94D1-54222C63F5DA}data = {"i1":1,"i2":2,"i3":3,"i4":4}
#由于字典是无序的,因此指定索引排列顺序
ps3 = Series(data,index=['i1','i2','i3','i4'])
ps3
i1 1
i2 2
i3 3
i4 4
pandas数据结构
2. DataFrame(数据框)
DataFrame是一种类似于关系表的表格型数据结构,DataFrame对象是一个二维表格,由1个索引列(index)和若干个数据列组成。其中,每列中的元素类型必须一致,而不同的列可以拥有不同的元素类型。
使用DataFrame前,需要导入pandas库中的DataFrame模块
from pandas import DataFrame
pandas数据结构
{5940675A-B579-460E-94D1-54222C63F5DA}data = { "name":["王晓明","李静","田海"], "sex":["男","女","男"], "aged":[20,19,21]}
#字典是无序的,因此需要通过columns指定列索引的排列顺序
df = DataFrame(data,columns=["name","sex","aged"])
df
index
pandas数据结构
DataFrame数据有列索引和行索引,行索引类似于关系表中每行的编号(未指定行索引的情况下,会使用0到N-1作为行索引),列索引类似于表格的列名(也称为字段)。
{5940675A-B579-460E-94D1-54222C63F5DA}df1 = DataFrame(data,columns = ["name","sex","aged"],index = ["L1","L2","L3"])
df1
{5940675A-B579-460E-94D1-54222C63F5DA}data = { "name":("张三","李四","王五","赵六"), "sex":("男","女","女","男"), "aged":(20,19,20,21), "score":(80,60,70,90)}
df = DataFrame(data) #使用字典创建DataFrame对象
df
pandas数据结构
pandas数据结构
DataFrame模块提供了丰富的函数,这些函数可以用来进行行、列编辑和统计计算等。
1.增加行
增加行数据可以通过append()函数传入字典数据即可。
append_data = { "name":"朱八","sex":"男","aged":23,"score":65}
new_df = df.append(append_data)
new_df
pandas数据结构
2.增加列
增加列可以直接通过标签索引方式进行,当新增的列中的数值不一样时,可以传入列表或者数组结构进行赋值。
{5940675A-B579-460E-94D1-54222C63F5DA}new_df["city"] = ["北京","西安","长春","珠海","昆明"]
new_df
pandas数据结构
3. 删除
使用drop()函数可以删除指定轴上的信息,原来的DataFrame数据不会删除。
{5940675A-B579-460E-94D1-54222C63F5DA}new_df.drop(2) #删除行索引是2的信息
pandas数据结构
4.修改标签
通过rename()函数完成行和列索引标签的修改,index参数指定要修改的行标签,columns参数指定要修改的列标签。
{5940675A-B579-460E-94D1-54222C63F5DA}new_df.rename(index = {3:2,4:3},columns = {"score":"grade"}) #以字典形式指定修改信息
pandas数据结构
Matplotlib——绘图
Matplotlib
—绘制精美的图表
Matplotlib——绘图
matplotlib中的快速绘图的函数库可以通过如下语句载入:
接下来调用figure创建一个绘图对象,并且使它成为当前的绘图对象。
通过figsize参数可以指定绘图对象的宽度和高度,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。因此本例中所创建的图表窗口的宽度为8*80 = 640像素。
import matplotlib.pyplot as plt
plt.figure(figsize=(8,4))
快速绘图
接下来通过一系列函数设置绘图对象的各个属性:
? xlabel / ylabel : 设置X轴/Y轴的文字
? title : 设置图表的标题
? ylim : 设置Y轴的范围
? legend : 显示图示
最后调用plt.show()显示出创建的所有绘图对象。
21
plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2,1.2)
plt.legend()
Matplotlib——绘图
快速绘图
22
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize=(8,4))
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$")
plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2,1.2)
plt.legend()
plt.show()
Matplotlib——绘图
快速绘图
23
Matplotlib——绘图
课堂小结
import 模块名1 [as 别名1]…
from 模块名 import 成员名1 [as 别名1],…
pandas数据结构
Series(序列)
DataFrame(数据框)
Matplotlib——绘图
1. 下列Python的模块中,主要用于数据的处理和分析的是( )
A.Image
B.pandas
C.scipy
D.matplotlib
课堂练习
B
课堂练习
2.有Python程序段如下:
import pandas as pd
ser = pd.Series([1,3,5,7])
print(ser.index)
该程序段运行后输出结果为( )
A
课堂练习
3. 某DataFrame对象df,其中包含18000数据行个和6个数据列,下列语句中能查看df对象中数据行的是( )
A.df.index
B.df.columns
C.df.head()
D.df.count()
C
课堂练习
4.(开放题)采集你感兴趣的数据,使用Python编程语言调用pandas模块处理数据、调用matplotlib模块绘图呈现数据,并描述分析结果。
每一种知识都需要努力,
都需要付出,感谢你们!