Numpy,pandas,Matplotlib三剑问鼎python数据分析

编程入门 行业动态 更新时间:2024-10-09 10:22:30

Numpy,pandas,Matplotlib<a href=https://www.elefans.com/category/jswz/34/1724296.html style=三剑问鼎python数据分析"/>

Numpy,pandas,Matplotlib三剑问鼎python数据分析

python之如此强大,是因为他的很多工具包,例如数据分析中就涉及三个主要的包,NumPy和pandas和Matplotlib库,其中NumPy和pandas主要就是处理一维以及二维数据,Matplotlib则是数据可视化的利器。
一 , NumPy库和数组

import numpy as np
a = [1,2,3,4] #创建列表a
b = np.array([1,2,3,4])#创建数组
print(a)
print(b)
print(type(a))#打印出数据类型
print(type(b))

运行结果:

a = [1,2,3,4] #创建列表a
b = np.array([1,2,3,4])#创建数组
print(a[1])
print(b[1])
print(a[0:2])#列表a切片的结果,注意列表切片是“左闭右开”
print(b[0:2])#数组b的切片结果,数组切片是左闭右开

运行结果:

2.数据分析为什么要用数组而不用列表,是因为 NumPy是专门用于处理数据处理的库,能更好的支持一些数学运算,而用列表进行数学运算比较麻烦;

a = [1,2,3,4] #创建列表a
b = np.array([1,2,3,4])#创建数组c = a * 2#列表是把元素重复一遍
d = b * 2#数组是对每个元素进行乘法
print(c)
print(d)

运行结果

e = [[1,2],[3,4],[5,6]]
f = np.array([[1,2],[3,4],[5,6]])
print("列表输出结果:",e)
print("数组输出结果:",f)

运行结果:

3.创建数组的几种方式

#创建一维数组
b = np.array([1,2,3,4])
#创建二维数组
f = np.array([[1,2],[3,4],[5,6]])
print(b)
​
print(f)

运行结果:

import numpy as np
x = np.arange(5)
y = np.arange(5,10)
z = np.arange(5,10,0.5)
print(x)
print(y)
print(z)

运行结果:

4,random产生随机数

a = np.random.randn(3) #创建一维数组,其中包含服从标准正态分布(均值为0,标准值为1的分布)的3个随机数
print(a)

运行结果:

a = np.random.rand(3) #生成0~1之间的3个随机数
print(a)

运行结果:

a = np.arange(12).reshape(3,4)
​
print(a)

运行结果:

a = np.random.randint(0,10,(4,4)) #创建随机整数
print(a)

运行结果:

二 , pandas库
1.pandas库介绍
pandas库:基于NumPy的开源python库,广泛应用完成数据快速分析,数据清洗和准备工作;

pandas更加擅长处理二维数据;

pandas库主要有Series和DataFrame的两种数据结构。

series类似于NumPy库创建的一维数组,不同的是Series对象不仅包含数值,还包含一组索引(用于定位);

import pandas as pd
s1 = pd.Series(['张三','李四','王五'])
print(s1)
print(type(s1))

运行结果:

注意:
Series单独使用较少,我们学习pandas库主要是为了使用它提供DataFrame数据结构。

2,DataFrame

(1)DataFrame是一种二维表格数据结构,可以将其看成Excel表格。

import pandas as pd
a = pd.DataFrame([[1,2],[3,4],[5,6]])
print(a)
print(type(a))

运行结果:

a = pd.DataFrame([[1,2],[3,4],[5,6]],columns = ['date','score'],index = ['A','B','C'])
print(a)
print(type(a))

运行结果:

(2)通过列表创建DataFrame,注意保证date列表和score列表长度一致,否则会报错。

a = pd.DataFrame() #创建一个空DataFrame
date = [1,3,5]
score = [2,4,6]
a['date'] = date
a['score'] = score
print(a)

运行结果:

(3)通过字段创建DataFrame

import pandas as pd
b = pd.DataFrame({'a':[1,3,5],'b':[2,4,6]},index = ['x','y','z'])
print(b)

运行结果:

(4)想让字典键变成索引,可以使用from_dict()函数将字典转换为DataFrame,并同时设置orient参数为index;

import pandas as pd
c = pd.DataFrame.from_dict({'a':[1,3,5],'b':[2,4,6]},orient = "index")
print(c)

运行结果:

(5)通过DataFrame的T属性对DataFrame进行转置;

import pandas as pd
f = pd.DataFrame({'a':[1,3,5],'b':[2,4,6]})
​
print(f)
#输出转置后的DataFrame
print(f.T)

运行结果:

3.创建DataFrame
(1)通过二维数组创建DataFrame

import numpy as np,pandas as pd
d = pd.DataFrame(np.arange(12).reshape(3,4),index = ['x','y','z'],columns = ['A','B','C','D'])
print(d)

运行结果:

(2)修改行索引或者列索引名称

a = pd.DataFrame([[1,2],[3,4]],columns = ['date','score'],index = ['A','B'])
print(a)

运行结果:

a.rename(index = {'A':'阿里','B':'腾讯'},columns = {'date':'日期','score':'分数'},inplace = True)
print(a)

运行结果:

a.index.values

运行结果:

a = a.reset_index() #列索引变成数字
print(a)

运行结果:

三.Matplotlib库

1.基本图表绘制

2.绘图之前我们引入matplotlib库。

plt.plot()绘制折线图;

plt.bar()绘制柱形图;

plt.pie()绘制饼图;

import matplotlib.pyplot as plt
x = [1,2,3]
y = [2,4,6]
plt.plot(x,y)#绘制折线图
plt.show()#展现折线图

运行结果:

3.利用NumPy生成一维数组;

import numpy as np
import matplotlib.pyplot as plt
x1 = np.array([1,2,3])
y1 = x1 + 1
plt.plot(x1,y1)
​
y2 = x1 * 2
​
plt.plot(x1,y2,color = 'red',linewidth = 3,linestyle = '--')
plt.show()
​

运行结果:

4.绘制柱形图

import matplotlib.pyplot as plt
​
x = [1,2,3,4,5]
y = [5,4,3,2,1]
​
plt.bar(x,y,color = 'blue')
plt.show()

运行结果:

5.绘制散点图

import matplotlib.pyplot as plt
import numpy as np
​
x = np.random.rand(20)
y = np.random.rand(20)
​
plt.scatter(x,y)
​
plt.show()

运行结果:

6.绘制直方图

import matplotlib.pyplot as plt
import numpy as np
​
#随机生成1000个服从正态分布的数据
data = np.random.randn(1000)
plt.hist(data,bins = 40,edgecolor = 'yellow')
plt.show()

运行结果:

import matplotlib.pyplot as plt
import numpy as np
​
data = np.random.randn(1000)
df = pd.DataFrame(data)
df.hist(bins = 40,edgecolor = 'black')

运行结果:

import matplotlib.pyplot as plt
import numpy as np
​
data = np.random.randn(1000)
df = pd.DataFrame(data)
df.plot(kind = 'hist')

运行结果:

7.创建一个二维表格格式

import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame([[8000,6000],[7000,5000],[6500,4000]],columns = ['人均收入','人均支出'],index = ['北京','上海','广州'])
df.head()
#同时绘制折线图和柱形图
#from matplotlib import font_manager as fm, rcParams
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False   #解决负号“-”显示为方块的问题
​
df['人均收入'].plot(kind = 'line')
df['人均收入'].plot(kind = 'bar')
​```

运行结果:

df['人均收入'].plot(kind = 'pie')

运行结果:

df['人均收入'].plot(kind = 'box')

运行结果:

df['人均收入'].plot(kind = 'area')

运行结果:

8.数据分析可视化的常用技巧

(1).添加文字说明

plt.title()函数给图表添加标题;

plt.xlabel()和plt.ylabel()函数分别给x轴和y轴添加标签;

import matplotlib.pyplot as plt
​
x = [1,2,3,4,5,6,7,8,9]
y = [2,3,4,5,7,8,9,5,9]
​
plt.plot(x,y)
plt.title('title')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

运行结果:

(2).添加图例

plt.legend()函数给图表添加图例,添加前需设置好label标签的参数

import numpy as np
import matplotlib.pyplot as plt
x1 = np.array([1,2,3])
y1 = x1 + 1
plt.plot(x1,y1,label = 'y = x + 1')
y2 = x1 * x1
plt.plot(x1,y2,color = 'red',linestyle = '--',label = 'y = x1 * x1')
​
plt.legend(loc = 'lower right')
plt.show()

运行结果:

(3).设置双坐标轴

一张图表上面绘制两条线,但是如果两条线取值范围差距相差较大,那么绘图出的图表效果会不美观,此时就需要双坐标轴来呈现图表;

import numpy as np
import matplotlib.pyplot as plt
​
x1 = np.array([10,20,30])
y1 = x1
plt.plot(x1,y1,color = 'red',linestyle = '--',label = 'y = x')
plt.legend(loc = 'upper left')#设置图表图例在左上角
​
plt.twinx() #设置双坐标轴
​
y2 = x1 * x1
plt.plot(x1,y2,color = 'blue',label = 'y = x * x')
plt.legend(loc = 'lower right')#设置图表图例在右下角
#plt.rcParams['figure.figsize'] = (8,6)设图表大小
#第一个元素代表长,第二个元素代表宽,这里的数字8和6 分别代表800像素和600像素
plt.show()

运行结果:

(4).绘制多图

有时候需要在一张画布上面绘制多个图表

利用matplotlib库的当前图形(figure)和当前轴(axes)概念来实现;

绘制多图通常采用subplot()和subplots()函数;

subplot(221)表示绘制2行2列的子图,当前绘制的是第1张子图;

import matplotlib.pyplot as plt
#绘制第一张子图:折线图
ax1 = plt.subplot(221)
plt.plot([1,2,3],[2,5,6],color = 'blue')
​
#绘制第二张子图:柱形图
ax2 = plt.subplot(222)
plt.bar([1,2,3,5,6],[3,5,7,7,8],color = 'blue')
​
#绘制第三张子图:散点图
ax3 = plt.subplot(223)
plt.scatter([1,3,5,5,6,6,7,7,7],[2,4,6,5,5,7,8,3,4])
​
#绘制第四张子图:直方图
ax4 = plt.subplot(224)
plt.hist([2,3,4,5,6,7,8,9])
​

运行结果:

4

import matplotlib.pyplot as plt
fig,axes = plt.subplots(2,2,figsize = (10,8))
ax1,ax2,ax3,ax4 = axes.flatten()
ax1.plot([1,2,3],[4,6,7])
ax2.bar([1,2,3],[4,6,7])
ax3.scatter([1,2,3],[4,6,7])
ax4.hist([1,2,3,4,6,7])

运行结果:

本篇主要介绍python数据分析三剑客的基本内容,也就是Numpy库,pandas库,Matplotlib库,以后我会持续更新这方面案例应用,欢迎大家一起互相学习,互相进步,可能很多方面写的不是很好,欢迎各路大神指导!

更多推荐

Numpy,pandas,Matplotlib三剑问鼎python数据分析

本文发布于:2024-03-23 01:51:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739052.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:三剑   数据   pandas   Numpy   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!