Python数据分析I

目录

注:简单起见,下文中"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 arg1else: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['价格']+arg1return 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.rhkb.cn/news/344612.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【国产NI替代】SMU 源测量仪:源测量单元平台主要用于半导体、传感器、模组等 IVR 测试测量

• 集 5 台仪器 (数字万用表、电压源、电流源、电子负载和脉冲发生器) 功能于⼀体 • 典型输出源及测量精度 02%,支持直流/脉冲输出模式 • 脉冲输出模式,最⼩脉冲宽度 100 us ,上升时间 10 us • 具有 pA 级分辨率高精度源,且…

融云:应用出海新增长引擎,GPT-4o 后的 AI 创新与用户运营

近日,融云与 TikTok、维卓联合在京举办了“十年出海,遇上 AI”私享会。 会上,融云解决方案架构师于洪达带来了《应用出海新增长引擎,AI 创新与用户精细化运营》主题分享,探讨在 AI 技术大潮下应用出海通过创新运营方式…

Java基础——数组Array

系列文章目录 文章目录 系列文章目录前言一、数组基本概念二、一维数组三、数组的模型四、数组对象的创建五、元素为引用数据类型的数组 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网…

linux业务代码性能优化点

planning优化的一些改动----------> 减少值传递&#xff0c;多用引用来传递 <---------- // ----------> 减少值传递&#xff0c;多用引用来传递 <---------- // 例1&#xff1a; class A{}; std::vector<A> v; // for(auto elem : v) {} // 不建议&#xff…

flink读取hive写入http接口

目录 0、创建hive数据 1、pom.xml 2、flink代码 3、sink 4、提交任务jar 5、flink-conf.yaml 6、数据接收 flink-1.17.2jdk1.8hive-3.1.3hadoop3.3.6passwordhttp0、创建hive数据 /cluster/hive/bin/beeline !connect jdbc:hive2://ip:10000 create database demo; d…

【CS.SE】使用 docker pull confluentinc/cp-kafka 的全面指南

文章目录 1 引言2 准备工作2.1 安装 Docker2.1.1 在 Linux 上安装 Docker2.1.2 在 macOS 上安装 Docker2.1.3 在 Windows 上安装 Docker 2.2 验证 Docker 安装 3 拉取 confluentinc/cp-kafka Docker 镜像3.1 拉取镜像3.2 验证镜像 4 运行 Kafka 容器4.1 启动 ZooKeeper4.2 启动…

vue3中的ref与reactive的区别

目录 1、两者的区别底层实现响应式引用与响应式对象 2、用法3、vue3中声明的数组/对象3.1 通过reactive 声明的Array/Object&#xff0c;给它重新分配一个全新的对象时&#xff0c;会出错、或失去响应式效果 3.2 解决方案 4、cosnt 说明5、Proxy 与 definePropertyref 浅层响应…

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集

重置多文本框 添加多文本控件列表 在构造函数中把我们需要操作的控件归类到对应列表之中 //创建多文本存放数组 - 存放那三列内容 checkBox lineEdi btnfor(int i1;i<9;i){// 添加到按钮数组QString btnName QString("pushButton_t%1").arg(i); //构建对应控件名…

前端工程化:基于Vue.js 3.0的设计与实践

这里写目录标题 《前端工程化&#xff1a;基于Vue.js 3.0的设计与实践》书籍引言本书概述主要内容作者简介为什么选择这本书&#xff1f;结语 《前端工程化&#xff1a;基于Vue.js 3.0的设计与实践》书籍 够买连接—>https://item.jd.com/13952512.html 引言 在前端技术日…

深度解析:短剧市场的发展趋势

一、 短剧视频的兴起 小程序短剧视频是近年来在社交媒体平台上崭露头角的一种内容形式&#xff0c;其独特的表达方式吸引了大量用户的关注&#xff0c;这种类型的视频通常以小幅度、短时长的剧情为主&#xff0c;具有轻松幽默的风格&#xff0c;适合在碎片化的时间作为娱乐消遣…

Shell脚本学习_字符串变量

目录 1.Shell字符串变量&#xff1a;格式介绍 2.Shell字符串变量&#xff1a;拼接 3.Shell字符串变量&#xff1a;字符串截取 4.Shell索引数组变量&#xff1a;定义-获取-拼接-删除 1.Shell字符串变量&#xff1a;格式介绍 1、目标&#xff1a; 能够使用字符串的三种方式 …

HTTP-web服务器

web服务器 web服务器实现了http和相关的tcp连接处理&#xff0c;负责管理web服务器提供的资源&#xff0c;以及对服务器的配置&#xff0c;控制以及拓展等方面的管理 web服务器逻辑实现了http协议&#xff0c;并负责提供web服务器的管理功能&#xff0c;web服务器逻辑和操作系…

makefile与进度条

Linux项目自动化构建工具-make/makefile make是一个命令&#xff0c; makefile是一个文件&#xff0c;保存依赖关系和依赖方法。‘ touch Makefile/makefile mybin:mytest.c//依赖关系 目标文件&#xff1a;依赖文件列表 文件列表的文件之间以空格分隔 gcc -o mybin mytest.…

信号:干扰类别及特征提取(二)

目录 第二部分&#xff1a;特征提取 一&#xff1a;瞬时特征参数 1.零中心归一化瞬时幅度之谱密度的最大值 2.非弱信号段零中心归一化瞬时幅度的标准偏差 3.零中心归一化瞬时幅度绝对值的标准偏差 4.零中心归一化非弱信号段瞬时频率的标准偏差 5.零中心归一化非弱信号段…

【动态规划-BM78 打家劫舍(一)】

题目 描述 你是一个经验丰富的小偷&#xff0c;准备偷沿街的一排房间&#xff0c;每个房间都存有一定的现金&#xff0c;为了防止被发现&#xff0c;你不能偷相邻的两家&#xff0c;即&#xff0c;如果偷了第一家&#xff0c;就不能再偷第二家&#xff1b;如果偷了第二家&…

WPS JS宏获取自动筛选后的行数

//WPS JS宏获取自动筛选后的行数 function getFilterRowCnt(shtRng)//shtRng表示筛选目标工作表范围 {let lngRowCnt 0;for(let rngCell of shtRng.SpecialCells(xlCellTypeVisible).Areas)//获取自动筛选后的单元格行数{lngRowCnt lngRowCnt rngCell.Rows.Count;}return ln…

【ARM Cache 及 MMU 系列文章 6.3 -- ARMv8/v9 Cache Tag数据读取及分析】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache Tag 数据读取测试代码Cache Tag 数据读取 在处理器中,缓存是一种快速存储资源,用于减少访问主内存时的延迟。缓存通过存储主内存中经常访问的数据来实现这一点。为了有效地管…

【JavaScript】内置对象 - 字符串对象 ⑤ ( 判断对象中是否有某个属性 | 统计字符串中每个字符出现的次数 )

文章目录 一、判断对象中是否有某个属性1、获取对象属性2、判定对象是否有某个属性 二、统计字符串中每个字符出现的次数1、算法分析2、代码示例 String 字符串对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String 一、判…

车载诊断架构 - 引导诊断

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

2024年几款优秀的SQL IDE优缺点分析

SQL 工具在数据库管理、查询优化和数据分析中扮演着重要角色。 以下是常见的 SQL 工具及其优缺点。 1. SQLynx 优点&#xff1a; 智能代码补全和建议&#xff1a;采用AI技术提供高级代码补全、智能建议和自动错误检测&#xff0c;大幅提高编写和调试SQL查询的效率。跨平台和…