机器学习(一): numpy、pandas、matplotlib基本使用

1  numpy的基本使用

     numpy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

     numpy的官网:http://www.numpy.org/ 。

     GitHub上的numpy:https://github.com/numpy/numpy

     菜鸟教程上的numpy:http://www.runoob.com/numpy/numpy-tutorial.html

1.1   numpy安装

      Windows系统 : pip install numpy

      Ubuntu系统:   sudo apt-get install python-numpy

1.2   numpy的简单实用

1.2.1  初始化数组

      import numpy as np
      arr1= np.array([[1,2,3],[1,2,3]])
      arr2 = np.zeros([2,3])
      arr3 = np.ones([5,5])
      arr4 =np.eye([3,3])
      arr5 =np.linspace(1,9,3)
      a2 = np.arange(100,210,10)
      print(a2)

      a3 =np.linspace(1,10,10)
      print(a3)

      a4 =np.logspace(1,7,num=7,base=2)
      print(a4)

1.2.2  数组的属性

a1 = np.array([[1.0, 2, 3], [1, 2, 3]])
print(a1)
a1_shape = a1.shape
print(a1_shape)
print(a1.size)
print(a1.ndim)
print(a1.dtype)
print(a1.itemsize)

1.2.3  数组、矩阵的索引与切片

a5 = np.arange(10)
s = slice(2,10,2)
print(a5)
print (a5[s])
print(a5[2:10:2])
a6 = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a6)
print(a6[1:])

a7 = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a7)
print(a7[...,1])   # 第2列元素
print(a7[1,...])   # 第2行元素
print(a7[...,1:])  # 第2列及剩下的所有元素

1.2.4  数组的变换

a8 = np.array([[1,2,3],[3,4,5]])
print(a8)
print(a8.reshape(3,2))
for i in a8.flat:
    print(i)

a9 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a9)
print(a9.flatten())
print(a9.ravel())

a10 = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a10.transpose())
print(a10.T)
print(np.hstack((a10,a10)))
print(np.vstack((a10,a10)))

a11 = np.arange(9)
print(a11)
print(np.split(a11,3))
print(np.split(a11,[4,7]))

更多内容参考:numpy网站 https://numpy.org/devdocs/user/quickstart.html

2 pandas的基本使用

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。利器之一:DataFrame,DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。利器之二:Series,它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。(应用自:https://github.com/teadocs/pandas-cn/tree/v0.25.0/docs)

pandas全面的使用教程可以参考 https://pandas.pydata.org/pandas-docs/stable/pandas.pdf

pandas10分钟入门可以参考https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

import pandas as pd
import numpy as np
# 导入数据
# 从CSV文件导入数据
pd.read_csv(filename) 

# 从限定分隔符的文本文件导入数据
pd.read_table(filename)

# 从Excel文件导入数据
pd.read_excel(filename)

# 从SQL表/库导入数据
pd.read_sql(query, connection_object)

# 从JSON格式的字符串导入数据
pd.read_json(json_string)

# 解析URL、字符串或者HTML文件,抽取其中的tables表格
pd.read_html(url)

# 从你的粘贴板获取内容,并传给read_table()
pd.read_clipboard()

# 从字典对象导入数据,Key是列名,Value是数据
pd.DataFrame(dict)


# 导出数据
# 导出数据到CSV文件
df.to_csv(filename)

# 导出数据到Excel文件
df.to_excel(filename)

# 导出数据到SQL表
df.to_sql(table_name, connection_object)

# 以Json格式导出数据到文本文件
df.to_json(filename)



# 创建测试对象
# 创建20行5列的随机数组成的DataFrame对象
pd.DataFrame(np.random.rand(20,5))

# 从可迭代对象my_list创建一个Series对象
pd.Series(my_list)
# 增加一个日期索引
df.index = pd.date_range('1900/1/30', periods=df.shape[0])

# 查看、检查数据
# 查看DataFrame对象的前n行
df.head(n)

# 查看DataFrame对象的最后n行
df.tail(n)

# 查看行数和列数
df.shape()

# 查看索引、数据类型和内存信息
df.info()

# :查看数值型列的汇总统计
df.describe()

# 查看Series对象的唯一值和计数
s.value_counts(dropna=False)

# 查看DataFrame对象中每一列的唯一值和计数
df.apply(pd.Series.value_counts)

# 数据选取
# 根据列名,并以Series的形式返回列
df[col]

# 以DataFrame形式返回多列
df[[col1, col2]]

# 按位置选取数据
s.iloc[0]

# 按索引选取数据
s.loc['index_one']

# 返回第一行
df.iloc[0,:]

# 返回第一列的第一个元素
df.iloc[0,0]

# 数据清理
# 重命名列名
df.columns = ['a','b','c']

# 检查DataFrame对象中的空值,并返回一个Boolean数组
pd.isnull()

# 检查DataFrame对象中的非空值,并返回一个Boolean数组
pd.notnull()
# 删除所有包含空值的行
df.dropna()

# 删除所有包含空值的列
df.dropna(axis=1)

# 删除所有小于n个非空值的行
df.dropna(axis=1,thresh=n)
# 用x替换DataFrame对象中所有的空值
df.fillna(x)
# 将Series中的数据类型更改为float类型
s.astype(float)
# 用‘one’代替所有等于1的值
s.replace(1,'one')
# 用'one'代替1,用'three'代替3
s.replace([1,3],['one','three']):用'one'代替1,用'three'代替3
# 批量更改列名
df.rename(columns=lambda x: x + 1)
# 选择性更改列名
df.rename(columns={'old_name': 'new_ name'})
# 更改索引列
df.set_index('column_one')
# 批量重命名索引
df.rename(index=lambda x: x + 1)

# 数据处理:Filter、Sort和GroupBy
# 选择col列的值大于0.5的行
df[df[col] > 0.5]

# 按照列col1排序数据,默认升序排列
df.sort_values(col1)

# 按照列col1降序排列数据
df.sort_values(col2, ascending=False)

# 先按列col1升序排列,后按col2降序排列数据
df.sort_values([col1,col2], ascending=[True,False])

# 返回一个按列col进行分组的Groupby对象
df.groupby(col)

# 返回一个按多列进行分组的Groupby对象
df.groupby([col1,col2])

# 返回按列col1进行分组后,列col2的均值
df.groupby(col1)[col2]

# 创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表
df.pivot_table(index=col1, values=[col2,col3], aggfunc=max)

# 返回按列col1分组的所有列的均值
df.groupby(col1).agg(np.mean)

# 对DataFrame中的每一列应用函数np.mean
data.apply(np.mean)

# 对DataFrame中的每一行应用函数np.max
data.apply(np.max,axis=1)

# 数据合并
# 将df2中的行添加到df1的尾部
df1.append(df2)

# 将df2中的列添加到df1的尾部
df.concat([df1, df2],axis=1)

# 对df1的列和df2的列执行SQL形式的join
df1.join(df2,on=col1,how='inner')

# 数据统计
# 查看数据值列的汇总统计
df.describe()

# 返回所有列的均值
df.mean()

# 返回列与列之间的相关系数
df.corr()

# 返回每一列中的非空值的个数
df.count()

# 返回每一列的最大值
df.max()

# 返回每一列的最小值
df.min()

# 返回每一列的中位数
df.median()

# 返回每一列的标准差
df.std()

 

 3 matplotlib 的基本使用

Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。官网:https://matplotlib.org/users/index.html。使用者指南:https://matplotlib.org/users/index.html。绘图设设置不再举例,查看官网手册。另外matplotlib的中文网站https://www.matplotlib.org.cn/也可使用。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值