机器学习基础(九)Python知识串讲---Pandas

机器学习基础知识笔记

  • Pandas是Python在科学计算和数据分析领域的核心模块。
  • 它含有使数据分析工作变得更快更简单的高级数据结构和操作工具。
  • Pandas是基于NumPy构建的,让以NumPy为中心的应用变得更加简洁。

1. Series的基本使用

  • 如下代码是使用pandas的基础操作:
import  pandas as pd
import  numpy as np

#  1. Series是Pandas的基本结构,可以认为是一维数组,自己定义索引
s1 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s1)
#  使用索引访问数据
print(s1['a'])
# print(s1[0])
#  可以支持各种运算
print(s1**2)
print(np.exp(s1))
print(s1+1)
print(s1+s1)
print(s1 - s1)
print(s1 * s1)
print(s1 / s1)
print(s1[0:3])
# 还可以使用索引切片,这种情况会包含最后一项
print(s1['a':'d'])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

array = s1.values
print(type(array))
# 直接转换为numpy数组
array1 = s1.to_numpy()

在这里插入图片描述

  • Pandas的Series也支持布尔索引:
#  支持布尔索引, 选取s1中的偶数元素
print(s1[s1 % 2 == 0])

在这里插入图片描述

  • 还可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。
  • 它可以用在许多原本需要字典参数的函数中。

dict1 = {'2019':1000, '2020':1200,'2022':1500}
s2 = pd.Series(dict1)
print(s2)

在这里插入图片描述

  • 我们也可以为Series对象更换索引列表,但是替代索引列表中的值与原索引列表中的值一致则保留,不一致则新增索引,但对应的值为NA(缺失值)。
# 更换索引
s3 = pd.Series(s1, index=['a', 'b', 'c', 'f'])
print(s3)

在这里插入图片描述

  • Series最重要的一个功能是:它在算术计算中会自动补齐不同索引的数据:
#  数据计算
s1 = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
s2 = pd.Series([7, 8, 9, 10], index=['a', 'b', 'f', 'g'])
print(s1 + s2)

在这里插入图片描述
可以看到最后的计算结果的index是s1和s2的并集,不能进行计算的会取NAN值,在这种情况下,进行数组计算的时候不再需要考虑数组的形状是否相同。

  • Series的删除机制:
#  删除机制
s3 = s1.drop(['a'])
print(s3)

在这里插入图片描述

2. DataFrame的基本使用

  • DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值)等。
  • DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。
  • 跟其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本上是平衡的。
  • 其实,DataFrame中的数据是以一个或多个二维块存放的。
  • 首先是dataframe的创建,代码如下:
import pandas as pd
import numpy as np

#  二维结构 DataFrame
df1 = pd.DataFrame([['zhangsan', 20, '男'],
                    ['lihong', 20, '女']])
print(df1)
#  也可以指定索引
df1 = pd.DataFrame([['zhangsan', 20, '男'],
                    ['lihong', 20, '女']], index=['a', 'b'], columns=['姓名','年龄','性别'])
print(df1)

在这里插入图片描述

  • dataframe 的访问操作有两种方式,代码如下:
print(df1)
print("============================")
print(df1['姓名'])
print(df1.姓名)  # 这种不建议去使用

在这里插入图片描述

  • dataframe的运算:
df2 = pd.DataFrame([[1, 2, 3, 4, 5],
                    [6, 7, 8, 9, 10]], index=['r1', 'r2'], columns=['c1,', 'c2', 'c3', 'c4', 'c5'])
df2['c6'] = pd.DataFrame([1], index=['r1'])
print(df2)
df2['c7'] = 10
print(df2)

df3 = pd.DataFrame([[1, 2, 3, 4, 5],
                    [6, 7, 8, 9, 10]], index=['r1', 'r2'], columns=['c1,', 'c2', 'c3', 'c4', 'c5'])
print(df2 + df3)

在这里插入图片描述
pandas索引匹配机制比numpy的数组运算更灵活,不需要保证两个数组的形式完全相同。

# 删除机制
df4 = df3.drop(columns=['c1'])
print(df4)

在这里插入图片描述

  • Pandos的文件操作:
import pandas as pd

df1 = pd.DataFrame([['zhangsan', 20, '男'],
                    ['lihong', 20, '女']], index=['a', 'b'], columns=['姓名','年龄','性别'])
df1.to_csv('a.csv', encoding='utf_8_sig', index=False)

df2 = pd.read_csv('a.csv', encoding='utf_8_sig')
print(df2)

df1.to_excel('a.xlsx', index=False)
pd.read_excel('a.xlsx')
print(df2)

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值