Numpy与Pandas

Numpy:

导入numpy包

import numpy as np

创建数组:

        直接创建:

a = np.array([1, 2, 3, 4, 5])
# [1 2 3 4 5]

        通过函数创建:

zero_arr = np.zeros((3, 4))   # 构建3行4列的二维数组, 元素值为: 0

one_arr = np.ones((2, 3, 4))   # 构建2个, 3行4列的二维数组, 元素值为: 1

empty_arr = np.empty((3, 4))   # 3行4列的二维数组, 元素值为: 空(随机地址)

        还可以使用array随机函数生成,与python中的range类似

arange_arr = np.arange(10, 20, 5)   # 起始值: 10, 结束值: 20, 步长: 5
# 结果[10 15]

关于数组的属性举例:

print('数组的维度: ', data.shape)  # (二维数组元素个数, 每个元素(一维数组)的元素个数.)
print('数组的轴是: ', data.ndim) # 几维数组, 轴就是几
print('数组中每个元素的类型是: ', data.dtype)
print('数组中每个元素的字节数为: ', data.itemsize)
print('数组的长度为: ', data.size)
print('数组的类型为: ', type(data))

二维矩阵的创建:

使用matrix()函数:数据使用空格或逗号隔开,数组与数组之间使用分号隔开

a = np.matrix("1,2;3,4")
>[[1 2]
 [3 4]]

也可以直接传入

c = np.matrix([[1, 2, 3], [4, 5, 6]])

也可以随机生成数据:random

# 生成三行四列的数组
a = np.random.rand(3, 4)  # rand 随机数, 范围是: 0.0 ~ 1.0

b = np.random.randint(-1, 5, size=(3, 4)) # randint 随机数(整数)自定义范围,例:-1~5

c = np.random.uniform(-1, 5, size=(3, 4))  # uniform  随机数(小数)自定义范围, 例:-1~5

数组可以分为等比数组与等差数组:

# 等比数组
# 参1: 起始值(10的n次方),  参2: 结束值(10的n次方), 参3: 元素的个数, 默认基础数字: 10
# a = np.logspace(参数1, 2, 3) 
a = np.logspace(0, 2, 5)

# 可以通过base改变默认的10的n次方
b = np.logspace(0, 2, 5, base=2)

# 通过设置endpoint的值, 可以实现: 包左不包右
c = np.logspace(0, 2, 5, base=2, endpoint=False)
# 输出结果如下
[  1.           3.16227766  10.          31.6227766  100.        ]
[1.         1.41421356 2.         2.82842712 4.        ]
[1.         1.31950791 1.74110113 2.29739671 3.03143313]
# 等差数组
# 参1: 起始值,  参2: 结束值, 参3: 元素的个数,也可以设置endpoint的值
a = np.linspace(0, 2, 5)

简要介绍一下numpy的基本函数:

print(np.ceil(10.3))    # 11, 向上取整, 天花板数.
print(np.floor(10.3))    # 10, 向上取整, 地板数.
print(np.rint(10.3))    # 10, 五舍六入
print(np.rint(10.51))    # 10, 五舍六入
print(np.rint(10.6))    # 11, 五舍六入
print(np.abs(-10.3))    # 10.3, 求绝对值
print(np.isnan(10.3))    # False, 不为空
print(np.multiply(10.3, 5.1))    # 乘法
print(np.divide(10, 3))    #  除法
print(np.where(10 > 3, 10, 3)) # 类似于三元表达式

a = np.random.randn(3, 4) # 返回标准的正态分布的数组
print(np.cumsum(arr))   # 累加和
print(np.sum(arr))  # 元素和
# axis控制行和列也可以写为 columns列 和 rows行
print(np.sum(arr, axis=1))  # 元素和按行统计
print(np.sum(arr, axis=0))  # 元素和按列统计
print(np.any(arr > 0))  # any类似于or
print(np.all(arr > 0))  # all类似于and
print(np.unique(arr))  # unique去重
np.sort(arr)           # sort排序

Pandas:分为Series对象和DataFrame对象

import pandas as pd
# 创建series对象
s1 = pd.Series([1, 2, 3])
# 创建DataFrame对象
pd1 = pd.DataFrame({
    'name': ['小明', '小红'],
    'age': [17, 18]
})

pandas的作用一般是对于数据进行分析,首先我们要读取到数据:

# 读取文件的数据并设置索引列index_col
data = pd.read_csv('./data/nobel_prizes.csv', index_col='id')
# 获取数据
data.head(n) # 默认获取前五行,可以设置获取行数n

我们读取到的数据是一个DF(DataFrame)对象,可以换取单行单列(Series对象)的数据进行详细的数据分析。

Series的常用属性方法如下:

# Serie:
s1 = data.loc[1] # 内容为1开头的,不是索引
print(s1.index)     # 获取索引, 即: 列名.
print(s1.values)    # 获取该行的数据
print(s1.mean())    平均值
print(s1.max())    #最大值
print(s1.min())  # 最小值
print(s1.std())  # 标准差

print(s1.count()) # 统计非空值
print(s1.shape)   # 数组的维度
print(s1.describe()) # 统计详细信息

DataFrame对象常用使用:

print(type(movie)) #  <class 'pandas.core.frame.DataFrame'>
print(s2.shape) # DataFrame对象的属性, 即: 行列 
print(s2.size)  # df对象的 数据个数
print(s2.ndim)  # df对象的轴, 2, 表示二维数组.
print(s2.head())    # 前5条
print(s2.tail())    # 后5条
print(s2.info())    # 查看列名, 数据类型, 是否有空值等...

print(len(s2))       # 行数.
print(s2.count())    # 统计各列的总数据数, 只统计非null值.
print(s2.min())      # 统计各列的最小值
print(s2.describe()) # 统计各列的详细信息

操作DF对象的行索引:

df2 = DF.set_index('索引列名') # 设置索引列
df3 = df2.reset_index            # 重置索引列
# 添加inplace=True(默认值是False), True: 表示修改原始df对象, False表示返回新的对象.
DF.set_index('movie_title', inplace=True)
# 可以在读取文件时直接设置索引列index_col

修改DF对象的行名和列名:

分别将行名和列名存入两个字典中,然后使用rename函数进行更改

#  定义字典, 表示要修改的行索引名 及其 对应修改后的值
idx_rename = {'原行名':'新行字', ......}

# 定义字典, 表示要修改的列名 及其 对应修改后的值
cols_rename = {'原列名':'新列名'......}

#  通过rename函数修改 行索引名 和 列名
DF.rename(index=idx_rename, columns=cols_rename) 

也可以使用列表,先读取列名和行名用列表存储,更改,在重新赋值回去

# 读取数据
movie = pd.read_csv('data/movie.csv', index_col='movie_title')
# 获取df对象的 行索引信息.
index_old = movie.index
# 获取df对象的 列名.
columns_old = movie.columns
# 4. 将行索引信息 和 列名 转成列表.
index_list = index_old.to_list()
columns_list = columns_old.to_list()

# 5. 修改行索引名
index_list[0] = '阿凡达'
# 6. 修改列名
columns_list[0] = '颜色'

# 7. 用修改后的新的 行索引名 和 列名, 重新赋值回去.
movie.index = index_list
movie.columns = columns_list

DF对象的添加,删除,插入:

# 给DF添加新列
DF['新列名'] = 新列数据 
# 删除列
DF.drop()
# 插入列
DF.insert()

DF中的loc和iloc加载行列:

# 加载单行
print(df.loc[0])    # 内容
print(df.iloc[0])   # 索引
# 加载多行
print(df.loc[[0, 1, 2]])    # 内容
print(df.iloc[[0, 1, 2]])   # 索引
# 加载指定的行列:df.loc[[行], [列]],   df.iloc[[行], [列]]
print(df.loc[:, ['country', 'year']])   # : 在这里表示所有行.
print(df.iloc[:, [0, 2, -1]])   # : 在这里表示所有行.  -1代表最后1列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值