首页 > 其他分享 >数据分析和机器学习库Pandas的使用

数据分析和机器学习库Pandas的使用

时间:2024-03-24 13:03:53浏览次数:31  
标签:数据分析 index 机器 df Series DataFrame 索引 pd Pandas

Pandas 库是一个免费、开源的第三方 Python 库,是 Python 数据分析和机器学习的工具之一。Pandas 提供了两种数据结构,分别是 Series(一维数组结构)与 DataFrame(二维数组结构),极大地增强的了 Pandas 的数据分析能力。

import pandas as pd
import numpy as np

Series

  • Series是一种类似于一维数组的对象,由下面两个部分组成:
    • Values:一组数据(ndarray类型)
    • index:相关的数据索引标签
  • Series的创建
    • 由列表或numpy数组创建
    • 由字典创建

s1 = pd.Series([1,2,3,4,5])
s1
在这里插入图片描述

s1 = pd.Series([1,2,‘three’,4,5.1])
s1
#Series只可以存储相同类型的元素
在这里插入图片描述

#使用一维数组作为Series的数据源
s2 = pd.Series(np.random.randint(0,10,size=(4,)))
s2
在这里插入图片描述

#使用字典作为Series的数据源
dic = {
‘name’:‘bobo’,
‘age’:20,
‘salary’:1000
}
s3 = pd.Series(dic)
s3
#字典做Series的数据源,字典的key充当的是Series的索引,字典的value值充当的是Series的value值
在这里插入图片描述

  • Series的索引
    • 隐式索引:默认形式的索引(0,1,2…)
    • 显式索引:自定义的索引,可以通过index参数设置显式索引

s4 = pd.Series([99,100,120],index=[‘语文’,‘数学’,‘英语’])
s4
在这里插入图片描述

显式索引的作用:增加了数据的可读性

  • Series的索引和切片:和列表一致

s = pd.Series([99,100,120,100],index=[‘语文’,‘数学’,‘英语’,‘理综’])
s
#显式索引不会覆盖隐式索引
在这里插入图片描述

#索引操作
s[0],s[‘语文’],s.语文
在这里插入图片描述

s[[0,1]],s[[‘语文’,‘理综’]]
在这里插入图片描述

#切片
s[0:3],s[‘语文’:‘理综’]
在这里插入图片描述

  • Series的常用属性
    • shape
    • size
    • index
    • values

s.shape#返回形状
s.size#返回Series元素的个数
s.index#返回索引
s.values#返回value值
在这里插入图片描述

  • Series的常用方法(重要)
    • head(),tail()
    • unique(),nunuque(),values_counts()
    • isnull(),notnull()
    • add(),sub(),mul(),div()

s1 = pd.Series(np.random.randint(0,10,size=(5,)),index=[‘a’,‘b’,‘c’,‘d’,‘e’])
s2 = pd.Series(np.random.randint(0,10,size=(5,)),index=[‘a’,‘b’,‘c’,‘f’,‘e’])

s1
在这里插入图片描述

s2
在这里插入图片描述

s = s1 + s2 #s1.add(s2)
s #Series的运算法则:只有索引一致的元素可以进行算术运算,否则就补空NaN
在这里插入图片描述

s.head(3) #只显示前3个元素
在这里插入图片描述

s.tail(2) #只显示后2个元素
在这里插入图片描述

#nuique():对Series的元素进行去重
s.unique()
在这里插入图片描述

#nunique():可以统计去重后非空元素的个数
s.nunique()
4
#value_counts():可以统计Series中非空元素出现的次数
s.value_counts()
在这里插入图片描述

#isnull():可以对Series中存储的每一个元素进行空值判定,如果为空则返回True,否则返回False
s.isnull()
在这里插入图片描述

#notnull():可以对Series中存储的每一个元素进行非空判定,如果为非空则返回True,否则返回False
s.notnull()
在这里插入图片描述

#可以使用布尔值作为Series的索引进行取值:可以将True对应位置的元素取出,False对应的元素忽略
s[[True,True,True,False,True,False]]
#对Series中的空值进行了过滤
在这里插入图片描述

s[s.notnull()] #实现了空值的过滤
在这里插入图片描述

DataFrame(重点)

  • DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

    • 行索引:index
    • 列索引:columns
    • 值:values
  • DataFrame的创建

    • ndarray创建
    • 字典创建

df1 = pd.DataFrame(data=np.random.randint(0,10,size=(5,6)))
df1
在这里插入图片描述

dic = {
‘name’:[‘bobo’,‘tom’,‘jerry’],
‘age’:[19,20,21]
}
df2 = pd.DataFrame(data=dic)
df2 #字典的key作为df的列索引
在这里插入图片描述

#可以指定df的显示行列索引
df3 = pd.DataFrame(data=np.random.randint(0,10,size=(2,3)),columns=[‘a’,‘b’,‘c’],index=[‘甲’,‘乙’])
df3
在这里插入图片描述

  • 问题:DataFrame中是否可以存储不同类型的元素?
    • 可以的
  • DataFrame的属性
    • values、columns、index、shape

df3.values #df的value值
df3.columns #返回列索引
df3.index #返回行索引
df3.shape #返回形状
(2,3)
#info():查看df表格的基本信息
df3.info()
在这里插入图片描述

  • DataFrame索引操作(重点)
    • 对列进行索引
    • 对行进行索引
    • 对元素进行索引

df = pd.DataFrame(data=np.random.randint(0,100,size=(5,6)),index=[‘a’,‘b’,‘c’,‘d’,‘e’])
df
在这里插入图片描述

#索引取单列
df[0]
在这里插入图片描述

#索引取多列
df[[0,3]]
在这里插入图片描述

#索引取单行
df.loc[‘a’] #loc后面务必要使用显式索引
在这里插入图片描述

df.iloc[0] #iloc后面务必使用隐式索引
在这里插入图片描述

#索引取多行
df.loc[[‘a’,‘e’]]
在这里插入图片描述

#索引取元素
df.iloc[0,1]
67
df.loc[‘a’,0]
7

  • DataFrame的切片操作(重点)
    • 对行进行切片
    • 对列进行切片

#切行
df[0:3]
在这里插入图片描述

#切列
df.iloc[:,0:3]
在这里插入图片描述

  • 时间数据类型的转换
    • pd.to_datetime(col)

dic = {
‘name’:[‘zhangsan’,‘lisi’,‘wangwu’],
‘hire_date’:[“2022-01-10”,“2021-11-11”,“2022-09-09”],
‘salary’:[1000,2000,3000]
}
df = pd.DataFrame(dic)
df
在这里插入图片描述

df.info()
在这里插入图片描述

df[‘hire_date’] = pd.to_datetime(df[‘hire_date’])

df.info()
在这里插入图片描述

#提取时间类型数据中的年,月,日,周
df[‘hire_date’].dt.year #提取年份
df[‘hire_date’].dt.month #提取月份
df[‘hire_date’].dt.day #提取天
df[‘hire_date’].dt.week #提取周
在这里插入图片描述

  • 将某一列设置为行索引
    • df.set_index()

df.set_index(‘hire_date’)
在这里插入图片描述

  • reset_index():可以将Series转换成一个df

s = pd.Series([1,2,3,4,5],index=[‘a’,‘b’,‘c’,‘d’,‘e’])
s
在这里插入图片描述

s.reset_index()
在这里插入图片描述

  • 将df中的数据存储到外部文件中

df.to_csv(‘./df.csv’)

  • 可以将外部文件的数据加载到df

data = pd.read_csv(‘df.csv’)
data
在这里插入图片描述

#删除指定的行or列
data.drop(columns=‘Unnamed: 0’,inplace=True) #删除列

#删除行
data.drop(index=0,inplace=True)

data
在这里插入图片描述

  • 如何将MySQL和pandas进行关联
    • 工具:pymysql(可以使用python程序远程连接指定的数据库)
    • 安装工具:pip install pymysql

import pymysql
#1.使用pymysql连接数据库
conn = pymysql.Connect(
host = “127.0.0.1”, #数据库服务器的ip地址
port = 3306, #mysql端口号
user = ‘root’,#用户名
password = ‘自己设置的MySQL密码’,
db = ‘testdb’
)

#2.将数据库库表中的数据读取加载到df
sql = ‘select job,ename from emp where sal > 1000’
df = pd.read_sql(sql,conn)
df
在这里插入图片描述

标签:数据分析,index,机器,df,Series,DataFrame,索引,pd,Pandas
From: https://blog.csdn.net/ak2111/article/details/136985404

相关文章

  • 数据分析-Pandas分类数据的类别处理
    数据分析-Pandas分类数据的类别处理数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律?数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析......
  • 【数据分析实战】物流行业数据分析
    数据来源:某企业销售的6种商品对应的送货及用户反馈数据解决问题:配送服务质量是否存在问题是否存在尚有潜力的销售区域商品是否存在质量问题分析过程:数据清洗①重复值、缺失值、格式调整②异常值处理(比如:消费金额存在等于0的情况,属于异常等)数据规整比如:增加一列辅......
  • 【数据分析实战】餐厅订单数据分析
    今天我们来分析以下某餐厅8月份订单数据,该餐厅的订单数据前10天、中间10天、后10天分别放在不同的Sheet里。订单数据字段包括:detail_id、order_id、dishes_id、logicprn_name、parent_class_name、dishes_name、itemis_add、counts、amounts、cost、piece_order_time、emp_......
  • 036—pandas 按行将列名根据值由大到小排序
    前言数据处理中,按行排列的列名可以提供更直观的数据探索和分析方式。你可以逐行查看列名,了解每列的含义和特征,有助于更好地理解数据集的结构和内容。需求:需要增加一列「分布方式」,每行的值是本行基金名称对应列名及数量,顺序按照值大小,值为0的不显示思路:先用apply(......
  • Streamlit实战手册:从数据应用到机器学习模型部署
    Streamlit实战手册:从数据应用到机器学习模型部署简介Streamlit核心功能介绍Streamlit的安装创建第一个Streamlit应用界面布局与导航数据处理与展示Streamlit的进阶应用交互式组件按钮复选框单选按钮滑块图表与可视化使用Matplotlib绘图使用Plotly创建交互式图表状态管......
  • 机器学习:智能时代的核心引擎
    目录一、什么是机器学习二、监督学习三、无监督学习四、半监督学习五、强化学习一、什么是机器学习机器学习是人工智能的一个分支,它主要基于计算机科学,旨在使计算机系统能够自动地从经验和数据中进行学习并改进,而无需进行明确的编程。机器学习算法通过构建模型来处......
  • Python机器学习笔记:CART算法实战
    完整代码及其数据,请移步小编的GitHub传送门:请点击我如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote前言在python机器学习笔记:深入学习决策树算法原理一文中我们提到了决策树里的ID3算法,C4.5算法,并且大概的了解了CART算法。对于ID3算法的实战可......
  • 机器学习金融预测领域2023部分综述论文阅读记录
    23年的综述最近读了3篇,总结笔记如下:本期所有论文链接:2023综述https://www.alipan.com/s/ySur3StxKip点击链接保存,或者复制本段内容,打开「阿里云盘」APP,无需下载极速在线查看,视频原画倍速播放。(2023)A_Systematic_Survey_of_AI_Models_in_Financial_Mark评价:原文写的一般,可以......
  • 数据分析基础
    数据分析基础1.数据加载使用Pandas库可以轻松地加载各种格式的数据,如CSV、Excel、JSON等。importpandasaspd#从CSV文件加载数据data=pd.read_csv(‘data.csv’).2.数据探索一旦数据加载完成,我们可以开始对数据进行探索性分析,了解数据的结构、特征和分布......
  • 机器学习——决策树(四)后剪枝
    观前提示:这是本人决策树相关的第四篇博文,前3篇的内容如下:1、建造训练集的决策树【完成结点类编写和建树过程】2、用验证集评估模型、选出泛化较好的数据划分方式训练模型3、预剪枝读者可根据需要从上方《机器学习》专栏中查阅对应文章第四章是后剪枝的内容,用到了许多前文......