Python数据分析I

news2024/11/24 10:25:57

目录

注:简单起见,下文中"df"均写为"表名","函数"均写为"HS","属性"均写为"SX","范围"均写为"FW"。

1.数据分析常用开源库

注释:

2.Pandas 数据结构

Series的创建

Series属性

3.DataFrame创建

4.文件加载

5.HS与SX

6.HS-初始化表格

7.HS-获取最值索引

8.SX-显示行列

9.HS/SX-索引

10.HS-计数

11.HS-最值中位数平均值标准差求和

12.HS-排序

13.HS-去重

14.应用

15.数据的保存和读取

16.HS-query查询

17.HS-isin

18.DF增列

19.DF删除

20.DF修改

21.Series/apply自定义函数

22.DataF/apply自定义函数

23.pandas/Mysql


注:简单起见,下文中"df"均写为"表名","函数"均写为"HS","属性"均写为"SX","范围"均写为"FW"。

1.数据分析常用开源库

Pandas

  • 基于Numpy,特点高效的科学计算库,核心的数据对象是ndarray(n维数组)

  • Series 一列数据

  • DataFrame 二维表

绘图的库最基础的 Matplotlib

  • Pandas 有绘图的API,基于Matplotlib

  • Seaborn 基于Matplotlib

注释:
简单起见,下文中"df"均写为"表名","函数"均写为"HS","属性"均写为"SX","范围"均写为"FW"
2.Pandas 数据结构
Series的创建

pd.Series()

  • S大写

  • 传入一个、两个参数

  • 第一个参数就是数据, 也可以通过index = 指定行索引

  • 如果不指定行索引, 会默认添加从0开始的索引

传入的数据可以是以下类型

  • numpy的ndarray

  • python 列表,元组,字典

  • 传入的如果是字典,字典的key作为索引,Value就是数据

一列Series数据类型必须一致的

  • 如果既有字符串,又有数字,会默认是字符串类型 Object

Series属性
s.shape # 形状 描述Series有几行 返回一个元组
s.values # Series的值 默认ndarray类型
s.index  # Series的索引, 如果手动指定, 就是一个ndarray类型, 如果是自动生成 rangeIndex()
3.DataFrame创建
# 定义一个字典
dict_data ={
    'id':[1,2,3],
    'name':['张三','李四','王五'],
    'age':[18,20,22]
}
# 储存在df中
df = pd.DataFrame(dict_data)
df
4.文件加载
# 不创建也可以加载文件
df = pd.read_csv('D:/Yuanman/day01/02_代码/data/scientists.csv')
df = pd.read_csv('D:/Yuanman/day01/02_代码/data/scientists.csv',encoding='gbk')
df
5.HS与SX
红色m:HS,用()
紫色p:SX,乄||[]

6.HS-初始化表格

加载数据之后,做具体的业务处理之前,一般固定的套路

head() info() describe()

从脑袋上取前5条,也可指定条数

表名.head()

从尾巴上取后5条,也可指定条数

表名.tail()

字段有哪些,有没有空值

表名.info()

看数据的分布情况

表名.describe()

查看所有数据分布情况

表名.describe(include='all')

查看有几个唯一值

表名.unique()

7.HS-获取最值索引
# 返回最大值的下标
表名['列名'].argmax()
# 返回最小值的下标
表名['列名'].argmin()
# 返回最大值的索引值
表名['列名'].idxmax()
# 返回最小值的索引值
表名['列名'].idxmin()
8.SX-显示行列
# 显示几行几列
表名.shape
# 仅显示行
表名.shape[0]
# 仅显示列
表名.shape[1]
# 显示所有值
表名.values
9.HS/SX-索引
# 行索引FW及步长
表名.index
# 显示列索引及类型
表名.columns
# 把某一列数据作为索引,加inplace=True替换原索引
表名.set_index('列名',inplace=True)
# 重置所有为从0开始的整数
表名.reset_index()
# 将其行索引修改为对应的列值
表名.index = df2['列名']
# 将其列索引(字段)修改为对应值
表名.columns =['列1','列2']
# 单独修改某行某列的索引,注意rename和replace类似,如果旧值没有找到,不会报错
表名.rename(index={0:'行索引名'},columns={'旧列名':'新列名'})
10.HS-计数
# 计算所有列的数据数,也可以单独计算某列
表名.count()
# 分组计数,查看每个分组的数量并降序,也可以单独计算某列
表名.value_counts(ascending=False)
11.HS-最值中位数平均值标准差求和
# 计算所有列的最大值,也可以单独计算某列
表名.max()
# 计算所有列的最小值,也可以单独计算某列
表名.min()
# 计算所有列的平均值,也可以单独计算某列
表名.mean()
# 计算所有列的中位数,也可以单独计算某列
表名.median()
# 标准差(方差开根号,反映了数据的离散程度,也可以单独计算某列)
s1.std()
# 对文件某一列或某多列进行求和,0是对列求和,默认是0
表名['字段'].sum()
# 1是对行求和,此时列字段至少两个
表名[['字段1','字段2']].sum()
12.HS-排序
# 按照某列排序,True升/False降,不指定显示列则为全部
表名['显示列名'].sort_values(by='筛选字段名',ascending=False)
# 根据某字段排序后显示其他字段
名称 = 表名[['字段1','字段2']].sort_values(by='字段2',ascending=False)
13.HS-去重
# 去重,假删
表名.drop_duplicates()
# 去重,真删(False假True真)
表名.drop_duplicates(inplace=True)

subset 传入列名的列表,用来做重复判断的条件

keep = 默认是first 满足重复条件的数据,保留第一次出现的,还可以选last 保留最后一次出现的

ignore_index = 默认是False 去重后会保留原来的索引,改成True之后,会重新给从0开始的索引

inplace 替换

表名.drop_duplicates(subset=['字段1','字段2'])
表名.drop_duplicates(subset=['字段1','字段2'],keep='last',inplace=True)
表名.drop_duplicates(subset=['字段1','字段2'],keep='last',ignore_index=True)
14.应用
# select *
表名[直接就条件]
# 获取数据的一列或多列
表名['列名']
表名[['列1,列2']]
# 通过下标切片方式获取部分行,[初始索引:终止索引:步长],不包括终止索引(左闭右开)
表名[a:b:c]
# 相当于sql中的where筛选,多个条件需要用()括起来,位运算连接(and:&,or:|)
表名['显示列'][表名['列名']=='数值']
# 根据条件增新列
表名['新列名']=表名['数据列1']-表名['数据列2']
# 拿出行数据,用列展示,[]内是行列名,不是编号
表名.loc[0]
# 所有行加一列
表名.loc[:,'列名']
# 0到3(左闭右闭)
表名.loc[:3] 
# 列名也可以加:指定列FW
表名.loc[:3,:'列名'] 
表名.loc[:3,['列1','列2']]
# 逗号前也可以作条件筛选
表名.loc[df['区域']=='望京租房',:'价格']
# 输出指定索引值的数据,[]内是编号,不是行列名,其他同上
新表名 = 带索引的表.iloc[0]['输出列名']
15.数据的保存和读取
# 创建数据文件
import pandas as pd
data =[
[1,'张三','1999-3-10',18],
[2,'李四','2002-3-10',15],
[3,'王五','1990-3-10',33],
[4,'隔璇老王','1983-3-10',40]
]
df = pd.DataFrame(data,columns=['id','name','birthday','age'])
# 将数据存储为表格文件
df.to_excel('test2.xlsx',sheet_name='student',index=False)
# 读取该文件
pd.read_excel('test2.xlsx',sheet_name='student')
# 将数据存储为csv文件
df.to_csv('test2.csv',index=False)
# 指定分隔符
df.to_csv('test3.csv',index=False,sep='\t')
# 读取该文件
pd.read_csv('test2.csv')
16.HS-query查询
# 引号外单内双
表名.query('区域=="望京租房"').head()
表名.query('区域 in ["望京租房","回龙观租房"]')['单独取该列']
​
# 层层递进
新表名 = 表名.query('区域 in ["望京租房","回龙观租房"]')
新新表名 = 新表名.query('朝向 in [“东”,"南”]')['单独取该列']
​
# 层层递进合成(类似于子查询)
表名.query('区域 in ["望京租房","回龙观租房"]').query('朝向 in ["东","南"]')['单独取该列']
​
# 上式也能这么写
表名.query('区域 in ["望京租房","回龙观租房"] and 朝向 in ["东","南"]')['单独取该列']
17.HS-isin
# 筛选是否为指定数据,输出True和False
表名['区域'].isin(['望京租房','回尨观租房'])
# 再传给df,输出所有字段
表名[表名['区域'].isin(['望京租房','回尨观租房'])]
# 多条件筛选(&或|)
表名[(表名['区域'].isin(['望京租房','回尨观租房'])) & (表名['朝向'].isin(['西南 东北','南 北']))]
18.DF增列
# 添加新列,只能在最后一列
表名['新列名']=['','',...]
​
# insert新增列,可指定位置
表名.insert(列索引,column='字段名',value='字段内容')
​
# 在某列后插入一列
所有列名 = 表.columns.tolist() # 首先获取现有列名
某列的索引 = 所有列名.index('某列') # 找到budget列的索引位置
所有列名.insert(某列的索引 + 1, '新列名') # 在budget列之后插入利润列,更新所有列名
表名 = 表名[columns] # 重置列顺序来更新表
19.DF删除
# 通过 df.drop(labels=,axis=,inplace=)方法删除行列数据
# labels: 行索引值或列名  
# axis: 删除行->0或index,删除列->1或columns,默认0
# inplace: True或False,是否在原数据上删除,默认 False
表名.drop(0)
表名.drop('列名',axis=1,inplace=True)
20.DF修改
# 直接改
表名.loc[0,'列名']= 数据
# 改多个
表名['列名']=[数据1,数据2,数据3,数据4,数据5]
# 修改指定数
表名.replace(to_replace='旧值',value='新值')
# 将某列更改后替换旧列并select* (将新列赋值给原列)
名称 = 表名['列名'].mean()
表名['列名']=表名['列名'].fillna(名称)
21.Series/apply自定义函数
def func(x):
    print(x)
    if x=='天通苑租房':
        return '昌平区'
    else:
        return x
# 遍历区域这一列,每遍历一条数据就会调用一次func把每个值传递给func函数,func函数的返回值作为apply的结果, 返回的还是Series
s = df['区域'].apply(func)
# apply 可以传递出了series值其它参数,但是传参必须从第二个参数开始
df_head3 = df.head().copy()
def func(x,arg1,arg2):
    print(x)
    if x=='天通苑租房':
        return arg1
    else:
        return arg2
df_head3['区域'].apply(func,args=['昌平区','其它区'])
22.DataF/apply自定义函数

df.apply(func,axis=默认值0)

  • 默认会传入每一列的series对象,如果数据有5列,func就会被调用5次,每次传入一列series对象

  • axis=1会传入每一行的Series对象,如果数据有10行,func就会被调用10次,每次传入一行的series对象

# 返回每一行它的价格/它的面积,但用列展示
def func1(x):
    return x['价格']/x['面积']
df_head3 = df.head().copy()
df_head3.apply(func1,axis=1)

df.apply() 传入自定义函数的时候,函数也可以接受额外的参数,传参args一定是列表

# 返回每一行如果区域为‘天通···’则给价格加个数,但用列展示
def func2(x,arg1):
    # print(x)
    # print("============") 分隔一下
    if x['区域']=='天通苑租房':
        x['价格']=x['价格']+arg1
    return x
df_head3.apply(func2,axis=1,args=[2000])
23.pandas/Mysql

(1)导包创建连接

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:root@localhost:3306/tabledata?charset=utf8')
# 'mysql+pymysql://用户名:密码@mysql服务IP地址:3306/数据库名字?charset=utf8'

(2)写入数据到Mysql

student.to_sql('student', con=engine, if_exists='append', index=False)

(3)从Mysql读取数据

pd.read_sql(sql='student', con=engine.connect(),columns=['id','name','age'])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网-高性能时序数据库QuestDB

高性能时序数据库QuestDB 开源地址:https://github.com/questdb/questdb 官网:https://questdb.io/ 当前 13.9k start 自带免费可视化管理界面 支持各种语言客户端 C & C .NET Go Java Node.js Python Rust 上手容易可兼容 Postgresql InfluxDB …

浅浅写一个Word、PowerPoint、Excel文档转PDF工具

前言 最近在搞知识库,需要把各种 Word、PowerPoint、Excel 文件转换成 PDF 文件,不然 Word 中的表格中的文字提取会出现一些问题;使用 Office 或者 WPS 将大量文件转换成 PDF 需要频繁重复打开文件,点击保存为PDF,然后…

Qt_C++ RFID网络读卡器Socket Udp通讯示例源码

本示例使用的设备&#xff1a; WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QHostInfo> #include <QNetworkInterface> #include <…

【机器学习】训练GNN图神经网络模型进行节点分类

1. 引言 1.1 图神经网络GNN概述 图神经网络&#xff08;Graph Neural Network&#xff0c;GNN&#xff09;是一种专门用于处理图结构数据的神经网络方法。它起源于2005年&#xff0c;当时Gori等人首次提出了GNN的概念&#xff0c;用于学习图中的节点特征以及它们之间的关系。…

Doris 少数SQL在Datagrip无法执行,而在DorisUI或程序调用可以执行的问题

问题&#xff1a;Doris 少数SQL在Datagrip无法执行&#xff0c;而在DorisUI或程序调用可以执行 解决&#xff1a;Datagrip 执行SQL切分异常&#xff0c;设置默认执行语句方式&#xff0c;将分句改为整句执行 但是 支持多SQL批量分开执行更好用

英伟达的数字孪生地球是什么

1 英伟达的数字孪生地球 Earth-2是一个全栈式开放平台&#xff0c;包含&#xff1a;ICON 和 IFS 等数值模型的物理模拟&#xff1b;多种机器学习模型&#xff0c;例如 FourCastNet、GraphCast 和通过 NVIDIA Modulus 实现的深度学习天气预测 (DLWP)&#xff1b;以及通过 NVIDI…

大学电工基础与电子设计试题及答案,分享几个实用搜题和学习工具 #其他#经验分享

学习和考试是大学生生活中不可避免的一部分&#xff0c;而在这个信息爆炸的时代&#xff0c;如何快速有效地获取学习资源和解答问题成为了大学生们共同面临的难题。为了解决这个问题&#xff0c;搜题和学习软件应运而生。今天&#xff0c;我将为大家介绍几款备受大学生青睐的搜…

Vue进阶之Vue无代码可视化项目(一)

Vue无代码可视化项目 项目搭建初始步骤拓展:工程项目从0-1项目规范化package.jsoncpell.jsoncustom-words.txtts-eslint规则.eslintrc.cjsgit钩子检查有没有问题type-checkspellchecklint:stylehusky操作安装pre-commitpnpm的commit规范package.json:commitlint.config.cjs安装…

深度解析Linux内核中fork工作原理和实现

Linux内核中的fork()系统调用是用来创建新进程的核心机制。它的主要工作是为新创建的子进程复制当前进程(父进程)的数据结构和内存空间,从而产生一个几乎完全相同的副本。fork()的实现涉及到操作系统内核中许多重要部分的交互和协作,过程比较复杂。 fork()的基本原理 当一个进…

ThinkPHP发邮件配置教程?群发功能安全吗?

ThinkPHP发邮件的注意事项&#xff1f;如何优化邮件发送的性能&#xff1f; 无论是用户注册、密码重置还是消息提醒&#xff0c;发送邮件都是一个常见的需求。AokSend将详细介绍如何在ThinkPHP框架中配置和发送邮件&#xff0c;帮助开发者轻松实现邮件功能。 ThinkPHP发邮件&…

【全开源】同城招聘SAAS信息前程无忧直聘达小程序

招聘SAAS&#xff1a;数字化转型中的招聘新助力 基于ThinkPHP和原生微信小程序开发的招聘平台系统&#xff0c;包含微信小程序求职者端、微信小程序企业招聘端、PC企业招聘端、PC管理平台端​ &#x1f31f; 一、招聘SAAS简介 在人力资源领域&#xff0c;数字化转型已成为不…

铁塔、烟囱建筑倾斜监测的倾角仪的分类以及工作原理

前言 倾角传感器是一种用于测量物体相对平面倾斜角度的仪器。倾角传感器又称作倾角仪、倾斜仪、测斜仪、水平仪、倾角计&#xff0c;经常用于物体的水平角度变化的精确测量&#xff0c;用它可测量被测平面相对于水平位置的倾斜度、两部件相互平行度和垂直度&#xff1b;已成为桥…

南京代理记账公司,为您提供专业服务,助力企业发展

在当今社会&#xff0c;企业的经营情况需要通过各种方式来进行监督和管理&#xff0c;记账是企业日常运营中不可或缺的一部分&#xff0c;对于非专业的财务人员来说&#xff0c;如何进行正确、有效的记账呢&#xff1f;这就需要找一家专业的代理记账公司来帮助您。 南京代理记账…

工程力学 - 课程导论

工程力学是工程学科中的核心基础课程&#xff0c;专注于研究物体在外力作用下的运动规律和受力情况。它涵盖了静力学、运动学、动力学和材料力学等关键领域&#xff0c;为工程结构的安全性、稳定性和功能性提供理论支撑。通过理论分析、实验测定和计算机模拟等方法&#xff0c;…

Hikyuu教程:简单波动率(EMV)择时交易系统的构建与实现

今日&#xff0c;我们将探讨如何借助 hikyuu 框架实现简单波动指标 EMV 的择时系统。与以往稍有不同的是&#xff0c;本次我们将采用策略部件仓库的写法来完成示例代码&#xff0c;以便大家进一步了解和熟悉仓库的使用方法。 什么是简易波动指标&#xff08;EMV&#xff09; …

[ubuntu]docker 卡登录 You‘ve been signed out

Setting->Resources->Proxies设置当前使用的proxies即可 参考&#xff1a;https://github.com/docker/for-mac/issues/7160#issuecomment-2061040813

香蕉派BPI-F3 进迭时空(SpacemiT)K1RISC-V开发板软件下载链接

香蕉派BPI-F3是一款工业级 8核RISC-V开源硬件开发板&#xff0c;它采用进迭时空&#xff08;SpacemiT&#xff09; K1 8核RISC-V芯片设计&#xff0c;CPU集成2.0 TOPs AI计算能力。4G DDR和16G eMMC。2个GbE以太网接口&#xff0c;4个USB 3.0和PCIe M.2接口&#xff0c;支持HDM…

Sylar C++高性能服务器学习记录21 【ByteArray模块-知识储备篇】

早在19年5月就在某站上看到sylar的视频了&#xff0c;一直认为这是一个非常不错的视频。 由于本人一直是自学编程&#xff0c;基础不扎实&#xff0c;也没有任何人的督促&#xff0c;没能坚持下去。 每每想起倍感惋惜&#xff0c;遂提笔再续前缘。 为了能更好的看懂sylar&…

HTML静态网页成品作业(HTML+CSS)—— 金宝贝儿童教育机构介绍网页(2个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有2个页面。 二、作品演示 三、代…

社交创新:Facebook的技术与产品发展

在当今数字化时代&#xff0c;社交网络已经渗透到我们生活的方方面面&#xff0c;成为了人们日常交流、信息获取和社交互动的主要方式。而在这个众多社交平台中&#xff0c;Facebook作为其中的佼佼者&#xff0c;其技术与产品的发展历程也是一个社交创新的缩影。本文将探索Face…