# 数据分析(1)
这篇简单介绍一下数据分析中常用到的几个库函数,强烈推荐使用JupyterNotebook ,有机会写一篇教程速通一下,下面的图也都是直接从Jupyter中截取出来的。
基础库介绍
Numpy
Pandas
Matplotlib
主要用于处理多维数组和矩阵运算
用于数据处理和分析 的库,提供了DataFrame数据结构和各种数据操作功能,如数据清洗、转换、筛选等
用于数据可视化 的库,提供了各种绘图函数和工具,可以创建各种类型的图表,如折线图、柱状图、散点图等
简介:NumPy 是 Python 中科学计算的基础包。它是一个 Python 库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种例程,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。
数组array 是 NumPy 库的中心数据结构。数组是值的网格,它包含有关原始数据、如何定位元素以及如何解释元素的信息。它有一个元素网格,可以以各种方式进行索引。这些元素都属于同一类型,称为数组 dtype 。
人话就是方便进行数组、矩阵运算
Scipy
简介:Scipy是一个基于NumPy的Python科学计算库,提供了更多高级的数学、科学和工程计算功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import numpy as npprint ("1d array" )a = np.arange(6 ) print (a)print ("2d array" )b = np.arange(12 ).reshape(4 , 3 ) print (b)print ("3d array" )c = np.arange(30 ).reshape(2 , 3 , 5 ) print (c)arr = np.random.normal(size=1000 ) print (arr)
1 2 3 4 5 6 7 8 9 10 11 import matplotlib.pyplot as pltplt.hist(arr) print ("max:" ,arr.max ())print ("min:" ,arr.min ())print ("mean:" ,arr.mean())print ("sum:" ,arr.sum ())print ("std:" ,arr.std())
1 2 3 matrix=np.array([[1 , 2 ], [5 , 3 ], [4 , 6 ]]) print (matrix)
1 2 3 4 5 m0=matrix.max (axis=0 ) m1=matrix.max (axis=1 ) print (m0)print (m1)
1 2 3 4 5 6 7 8 9 10 print ("reshape" )print (matrix)rmatrix=matrix.reshape(2 ,3 ) print (rmatrix)print ("transpose" )print (matrix.transpose())print (matrix.T)
人话就是画图的
1 2 3 4 5 6 7 8 9 10 11 import matplotlib.pyplot as pltimport numpy as npx1=np.random.rand(10 ) x2=np.random.rand(10 ) fig = plt.figure() ax = fig.add_subplot(221 ) ax.plot(x1) ax = fig.add_subplot(222 ) ax.plot(x2)
你可以一个一个设置基础属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 fig = plt.figure() ax = fig.add_subplot(111 ) ax.set_title('My plot title' ) ax.set_xlim([0 , 10 ]) ax.set_ylim([-5 , 5 ]) ax.set_ylabel('My y-axis label' ) ax.set_xlabel('My x-axis label' ) plt.show()
也可以一口气设置
1 2 3 4 5 6 7 8 9 fig = plt.figure() ax = fig.add_subplot(111 ) ax.set (title='An Axes Title' , xlim=[0 , 10 ], ylim=[-5 , 5 ], ylabel='My y-axis label' , xlabel='My x-axis label' ) plt.show()
下面主要以plot为例,matplotlib的图像类型 其实相当丰富
1 2 3 4 5 6 7 8 9 10 11 import numpy as npx=np.random.rand(10 ) print (x)plt.plot(x) plt.xlabel('X-axis Label' ) plt.show()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import matplotlib.pyplot as pltimport numpy as npx=np.random.rand(10 ) fig, axes = plt.subplots(nrows=2 , ncols=2 , sharex=True , sharey=True ) axes[0 , 0 ].set (title='Upper Left' ) axes[0 , 0 ].plot(x) axes[0 , 1 ].set (title='Upper Right' ) axes[0 , 1 ].plot(x,'g' ) axes[1 , 0 ].set (title='Lower Left' ) axes[1 , 0 ].plot(x,'g*--' ) axes[1 , 1 ].set (title='Lower Right' ) axes[1 , 1 ].plot(x,'g' ) axes[1 , 1 ].plot(x,'r*' ) plt.show()
Pandas 提供两种基本类型的数据结构:Series和Dataframe
Series是可以保存任何类型数据的一维数组
Dataframe 一种二维结构,用于将数据保存在包含行和列的表中
1 2 3 4 import pandas as pds1 = pd.Series([23 ,324 ,2 ,0 ,"ABC" ,"DEF" ,-123 ]) print (s1)
1 2 3 4 5 s2 = pd.Series([23 ,324 ,2 ,0 ,"ABC" ,"DEF" ,-123 ],index=["a" ,"b" ,"c" ,"d" ,"e" ,"f" ,"g" ]) print (s2)print ("我们设置的index" )print (s2["b" ])
1 2 3 4 5 6 7 8 9 10 import numpy as nps3 = pd.Series(np.random.rand(100000 )) print (s3)ax = s3.plot.hist(bins=100 ) ax.set_xlabel("Number" ) ax.set_ylabel("Entries per bin" ) ax.set_title("Uniform distribution" )
1 2 3 4 5 6 import matplotlib.pyplot as pltplt.hist(s3,bins=100 ) plt.title("Uniform distribution" )
Dataframes
一些主要功能: 数据表示:以包含行和列的表格式存储数据。 异构数据类型:可以在不同的列(例如,整数、浮点数、字符串、布尔值)中保存不同的数据类型。 标签:每行和每列都有一个标签(索引和列名称)。 可变:允许数据操作和修改。 强大的操作:提供用于数据分析、操作和探索的各种功能和方法。 可扩展:可以通过库和用户定义的函数使用其他功能进行自定义和扩展。
1 2 3 4 5 6 7 8 9 df = pd.DataFrame( { "Name" : ["drunksweet" , "jiaotangjiu" ,"soubai" ,"drunksweet" , "jiaotangjiu" ,"soubai" ,], "Age" : [18 , 19 , 18 , 18 , 19 , 18 ], "Sex" : ["male" , "male" , "male" ,"male" , "male" , "male" ], }) print (df)df["Age" ]