python数据分析之numpy与pandas入门

目录

  • 简介
  • 一、numpy常用数据结构
    • 1、数组和矩阵
    • 2、访问方法
  • 二、numpy矩阵运算(加减乘逆)
    • 1、加减
    • 2、乘法(普通乘,矩阵乘,点乘)
    • 3、逆和伪逆
    • 4、转置和计算行列式
  • 三、numpy常用数据清洗方法
    • 1、sort()函数
    • 2、argsort()函数
    • 3、where()和extract()
  • 四、pandas常用数据结构
    • 1、series序列
    • 2、dataframe(非常重要)
  • reference


简介

numpy是以矩阵为基础的数学计算模块,提供高性能的矩阵运算,数组结构为ndarray。(列表可以存储任意类型的数据,数组只能存储一种类型的数据)
pandas是基于numpy数组构建的,但二者最大的不同是pandas是专门为处理表格和混杂数据设计的,比较契合统计分析中的表结构,而numpy更适合处理统一的数值数组数据。pandas数组结构有一维Series和二维DataFrame。

一、numpy常用数据结构

1、数组和矩阵


# 数组
arr1 = np.array([3,4,5,6])
# 指定(浮点数)数据类型
arr2 = np.array(arr1,dtype=float)
# 三维数组
arr3 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
# [a,b)间隔c的数组
arr4 = np.arange(0,10,1)
# [a,b] 平均取c个数(线性分割)生成1*c的行向量
arr5 = np.linspace(1,10,10)
# 生成矩阵
mat1 = np.mat([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
# 生成a*b的零矩阵
print(np.zeros([4,5]))
# 生成a*b的1矩阵
print(np.ones([2,3]))

2、访问方法

python数据分析之numpy与pandas入门_第1张图片

二、numpy矩阵运算(加减乘逆)

1、加减

arr6 = np.array([[3,4,2,1],[0,7,3,2],[2,3,1,4],[2,2,2,2]])
# 矩阵加法 (形状相同)
print(arr3 + arr6)
# 矩阵加矩阵(列相等,行不等)4x4 + 1x4 按行相加
print(arr2 + arr3)

2、乘法(普通乘,矩阵乘,点乘)


# 普通‘*’ 和numpy中的multiply方法一样 为对应位置元素相乘
print(np.multiply(arr3, arr6))
# 矩阵乘matrix multiply
print(np.matmul(arr3, arr6))
# 数量积(貌似和matmul一样)
print(np.dot(arr3, arr6))

3、逆和伪逆


from scipy import linalg
# 求逆 方法一
print(linalg.inv(arr6))
# 方法二 (转化为矩阵可以直接.I转置)
print(np.matrix(arr6).I)
# 求伪逆
print(np.linalg.pinv(arr6))

4、转置和计算行列式

# 矩阵转置
print(arr6.T)
# 计算行列式
print(linalg.det(arr6))

三、numpy常用数据清洗方法

1、sort()函数

排序,默认按降序

# 0代表沿着行的方向, 1代表沿着列的方向
np.sort(arr3,axis = 0)
np.sort(arr3,axis = 1)

2、argsort()函数

argsort返回的是排完序以后,在原数据中的索引位置

np.argsort(arr3)

3、where()和extract()

# 满足条件的,赋值为1,不满足的赋值为-1,返回的数组类型和arr3一样
print(np.where(arr3>3,1,-1))
# np.extract 只会输出满足条件的数据(以一维数组的形式)
print(np.extract(arr3>3,arr3))

四、pandas常用数据结构

1、series序列

包括 values,index和name

# encoding: utf-8
import pandas as pd
import numpy as np

# 构造序列
series1 = pd.Series([2.8,3.01,8.99,8.59,5.18])
series2 = pd.Series([2.8,3.01,8.99,8.59,5.18],index = ['a','b','c','d','e'],name ='这是一个series')
series3 = pd.Series({'北京':2.8,'上海':3.01,'广东':8.99,'江苏':8.59,'浙江':5.18})
# series方法
print(series3.values)
print(series3.index)

2、dataframe(非常重要)

包括index和columns
数据框其实就是一个二维表结构,是数据分析中,最常用的数据结构


# 使用嵌套列表
list1 = [['张三',23,'男'],['李四',27,'女'],['王二',26,'女']]
df1 = pd.DataFrame(list1,columns=['姓名','年龄','性别'])
print(df1)

# 使用字典,字典的键被当成列名
df2 = pd.DataFrame({'姓名':['张三','李四','王二'],'年龄':[23,27,26],'性别':['男','女','女']})
print(df2)

# 使用numpy
array1 = np.array([['张三',23,'男'],['李四',27,'女'],['王二', 26,'女']])
df3 = pd.DataFrame(array1,columns=['姓名','年龄','性别'],index = ['a','b','c'] )
print(df3)


reference

https://zhuanlan.zhihu.com/p/146754890
https://blog.csdn.net/liumengqi11/article/details/113174269

你可能感兴趣的:(python基础知识,python,数据挖掘)