Pandas -----------------------基础知识(二)

news2024/9/23 16:52:09

dataframe读写数据操作

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

 写到csv文件中 ,路径在当前目录同级的output目录下,不需要索引,不需要标题,列与列的分隔符为‘*’,只显示id,name,birthday三列,并且为追加模式

df.to_csv('./output/student11.csv',
 index=False,
header=False,
sep='*',
columns=['id', 'name', 'birthday'],
mode='a')

读取csv文件 将第零列作为索引列,不需要标题,只显示一列,两行数据

pd.read_csv('./output/student11.csv',
index_col=0,
header=None,
usecols=[0],
nrows=2)

 写到excel文件中 不需要索引 需要标题

df.to_excel('./output/student11.xlsx',index=False,header=True)

读excel文件,索引为第零列,标题也是第零行,跳过一行

pd.read_excel('./output/student11.xlsx',index_col=0,header=0,skiprows=1)

 

pd.read_excel('./output/student12.xlsx',index_col=0)

 将数据写到mysql中 (可能出现中文乱码错误 创建库的时候 加上

create database test character set 'utf8';

建立连接 mysql数据库+pymysql子数据库 ://用户名:密码@ip地址:端口号/库名?编码

# 连接
from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')

 con是上面的连接  如果存在就替换 不需要索引

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

 追加

from sqlalchemy import types

dtype = {'birthday':types.Date}

df.to_sql('student_2', con=engine, if_exists='append', index=False, dtype=dtype)

从sql中读取数据

import pandas as pd
from sqlalchemy import create_engine
# 1 通过表读
conn = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')

# df = pd.read_sql("student_2", con=conn)
df = pd.read_sql_table("student_2", con=conn)

df

 通过从mysql中读取 然后 查询表

#  sql 读取
import pandas as pd
from sqlalchemy import create_engine
# 1 通过表读
conn = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')

# df = pd.read_sql("select * from student_2 where age>30", con=conn)
df = pd.read_sql_query("select * from student_2 where age>30", con=conn)

df

获取df子集

加载数据 获取前五行 (tail()获取后五行)

import pandas as pd

# 加载数据 ../data/b_LJdata.csv
df = pd.read_csv('./data/b_LJdata.csv').head()
df

获取户型列

法一  :df['户型']
法二  :df.户型

 获取多列  (再包一层)

df[['户型','价格']]

 获取面积大于80的数据

df['面积']>80

list(df['面积']>80)

[False, False, True, True, False]

法一:df[[False, False, True, True, False]]

或者 

法二:df[df['面积']>80]

 通过切片获取数据

df[:5:3]   左闭右开  [start:end:step]

案例 : 获取天通苑租房、望京租房、北苑租房 且朝向为东或南的房子信息

 

 最后用new_df再包一下

(new_df['区域']=='天通苑租房') | (new_df['区域']=='望京租房') | (new_df['区域']=='北苑租房')
或者
new_df['区域'].isin(['天通苑租房','望京租房','北苑租房']) 

(new_df['朝向']=='东') | (new_df['朝向']=='南')

或者

new_df['朝向'].isin(['东','南'])

((new_df['区域']=='天通苑租房') | (new_df['区域']=='望京租房') | (new_df['区域']=='北苑租房')) & ((new_df['朝向']=='东') | (new_df['朝向']=='南'))

或者 

new_df[new_df['区域'].isin(['天通苑租房','望京租房','北苑租房']) & new_df['朝向'].isin(['东','南'])]

#法一
new_df[
(  (new_df['区域']=='天通苑租房') | 
(new_df['区域']=='望京租房') | 
(new_df['区域']=='北苑租房')   ) 
& 
((new_df['朝向']=='东') | 
(new_df['朝向']=='南'))
]
# 法二
new_df[new_df['区域'].isin(['天通苑租房','望京租房','北苑租房']) 
& new_df['朝向'].isin(['东','南'])]

df方法

  • loc通过行列名获取子集
  • iloc通过行列下标获取子集
  • query函数获取子集
  • isin函数获取子集

 加载数据获取前十行

import pandas as pd

df = pd.read_csv('./data/b_LJdata.csv')
df
new_df = df.head(10)
new_df

 

loc通过行列名获取子集

new_df[new_df.index == 2] #获取索引为2这行

new_df.loc[2] #series对象

new_df[new_df.index.isin([2,3,4])] 

new_df.loc[[2,3,4]]  #注意两个[]

new_df[['区域','地址','价格']] #获取多列

切片 

new_df.loc[:6:2]  左闭右闭

区别于

new_df[:6:2] 左闭右开

布尔值向量获取行数据

求面积大于85的房子的区域,户型和价格

new_df.loc[new_df['面积']>85, ['区域', '户型', '价格']]

等价于

new_df[new_df['面积']>85][['区域','户型','价格']]

new_df.loc[[1,3,5]] #根据位置 取第一第三第五行数据

new_df.loc[[1,3,5],['区域', '面积', '价格']]

new_df.loc[:,'区域':'价格':2]  逗号左边表示取几行逗号右边表示要几列

iloc通过行列下标获取子集

行下标获取一行

new_df.iloc[2]  与new_df.loc[2]相同

new_df[new_df.index==2]

获取某个

new_df.iloc[2,1]

'远见名苑'

获取多行数据

new_df.iloc[[2,3]] 同 new_df.loc[[2,3]] 同 new_df[new_df.index.isin([2,4])]

new_df.iloc[1:3:1] 左闭右开

new_df.iloc[:,1:3]  全部行,列从(索引)第一列到第三列 左闭右开 步长为一

new_df.iloc[[2,5,8],[0,2]]  同 new_df.loc[[2, 5, 8], ['区域', '户型']]
 或new_df[new_df.index.isin([2,5,8])][['区域','户型']]

isin函数获取子集

new_df.isin(['天通苑租房', '南', 50, 103])

原数据

new_df[new_df.isin(['天通苑租房', '南', 50, 103])] #再套一层

表示两个条件同时成立  满足区域 满足朝向

new_df[new_df['区域'].isin(["天通苑租房", "北苑租房", "望京租房"]) & new_df['朝向'].isin(["南", "东"])]

在上述条件下 求面积

new_df[new_df['区域'].isin(["天通苑租房", "北苑租房", "望京租房"]) & new_df['朝向'].isin(["南", "东"])]['面积']

new_df['面积'][new_df['区域'].isin(["天通苑租房", "北苑租房", "望京租房"]) & new_df['朝向'].isin(["南", "东"])]

 query函数获取子集

new_df.query('区域 in ("天通苑租房", "北苑租房", "望京租房") and 朝向 in ("南", "东")')

  • 目标: 查询 区域是 北苑租房
new_df[new_df['区域']== '北苑租房']
new_df.loc[new_df['区域']== '北苑租房']
new_df.iloc[new_df.index[new_df['区域']=='北苑租房']]
new_df.query('区域=="北苑租房"')

  • 目标: 查询 区域是 天通苑租房 北苑租房 小西天租房; 朝向是 南 东南
new_df[(new_df['区域'].isin(['天通苑租房', '北苑租房', '小西天租房'])) & (new_df['朝向'].isin(['南', '东南']))]
new_df.query('区域 in ("天通苑租房", "北苑租房", "小西天租房") and 朝向 in ("南", "东南")')

  • 目标: 查询 区域是 天通苑租房 北苑租房 小西天租房; 朝向是 南 东南 对应 价格
new_df.query('区域 in ("天通苑租房", "北苑租房", "小西天租房") and 朝向 in ("南", "东南")')['价格']
new_df['价格'].to_frame()[(new_df['区域'].isin(['天通苑租房', '北苑租房', '小西天租房'])) & (new_df['朝向'].isin(['南', '东南']))]

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

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

相关文章

SOLIDWORKS 2025 重点新功能大放送(壹)

SOLIDWORKS 2025涵盖全新以用户为中心的增强功能,致力实现更智能、更快速地与团队和外部合作伙伴协同工作。 小索是设计部负责人,SOLIDWORKS资深使用者,使用SOLIDWORKS软件多年,喜欢分享,正在体验SOLIDWORKS 2025版本…

tensorboard展示不同运行的曲线结果

运行tensorboard曲线如下: tensorboard --logdir .有时候,曲线图会展示多条曲线,以至于我们想分辨哪条线来自哪次训练都做不到了。如下图是设置smoothing-0.6的结果: smoothing可以在页面找到设置按钮,呼出设置侧边…

【算法笔记】二分查找 红蓝染色法

目录 二分查找 红蓝染色法(感谢灵神)闭区间[left, right]左闭右开区间[left, right)开区间(left, right)变式 二分查找 红蓝染色法(感谢灵神) 这里是灵神的教学视频:二分查找 红蓝染色法_哔哩哔哩_ bilibili 学了二分…

玩转RabbitMQ声明队列交换机、消息转换器

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

中兴交换机三层配置

中兴交换机三层配置 目的:将1-10端口划分到3001vlan,11-20端口划分到3002vlan中去 客户端客户端IPvlan网关主机A88.88.1.1203001192.168.1.254主机B192.168.100.1303002192.168.100.254 1、通过Console线登录设备 **********************************…

导出导入Oracle数据库使用黑框命令方式exp、imp【亲测】

下载工具 根据自己数据库的版本下载,以v19为例: 下载基础包Basic Package和工具包Tools Package 两个压缩包中的文件夹一样,但内容不一样,将两个压缩包中的文件解压合并到一起 https://www.oracle.com/database/technologies/inst…

TLV解码 - 华为OD统一考试(E卷)

2024华为OD机试(E卷D卷C卷)最新题库【超值优惠】Java/Python/C合集 题目描述 TLV编码是按 [Tag Length Value] 格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度&#xff…

Zotero(7.0.5)+123云盘同步空间+Z-library=无限存储文献pdf/epub电子书等资料

选择123云盘作为存储介质的原因 原因1: zotero个人免费空间大小:300M,如果zotero云端也保存文献pdf资料则远远不够 原因2: 百度网盘同步文件空间大小:1G123云盘同步文件空间大小:10G 第一台电脑实施步骤…

微服务--Gateway网关

在微服务架构中,Gateway(网关)是一个至关重要的组件,它扮演着多种关键角色,包括路由、负载均衡、安全控制、监控和日志记录等。 Gateway网关的作用 统一访问入口: Gateway作为微服务的统一入口&#xff0c…

DNF Decouple and Feedback Network for Seeing in the Dark

DNF: Decouple and Feedback Network for Seeing in the Dark 在深度学习领域,尤其是在低光照图像增强的应用中,RAW数据的独特属性展现出了巨大的潜力。然而,现有架构在单阶段和多阶段方法中都存在性能瓶颈。单阶段方法由于域歧义&#xff0c…

计算机网络 --- Socket 编程

序言 在上一篇文章中,我们介绍了 协议,协议就是一种约定,规范了双方通信需要遵循的规则、格式和流程,以确保信息能够被准确地传递、接收和理解。  在这篇文章中我们将介绍怎么进行跨网络数据传输,在这一过程中相信大家…

常⻅中间件漏洞(WebLogic)靶场

1.后台弱⼝令GetShell 启动环境 默认账号密码:weblogic/Oracle123 weblogic常⽤弱⼝令:https://cirt.net/passwords?criteriaweblogic 这⾥注意, 单个账号错误密码5次之后就会⾃动锁定。 172.16.1.51:7001/console/login/LoginForm.jsp …

视频剪辑软件排行榜前十名推荐!从入门到专业领域都有!

随着短视频的流行,视频剪辑已成为表达创意、分享故事、获取流量的重要工具。无论是专业视频制作人还是业余爱好者,选择一款合适的视频剪辑软件都至关重要。今天,我们就来盘点一下视频剪辑软件排行榜前十名,帮助你找到最适合自己的…

JavaScript是如何来的~~

文章目录 前言一、网络的诞生 ( The birth of the Web )二、Mosaic 浏览器三、Netscape 浏览器四、JavaScript的诞生 ~ 千呼万唤始出来总结 前言 例如:想要了解一门语言的发展历程,首先你得知道它是怎么来的,所以本文开篇介绍了网络的基本发…

【行为树】01-第一棵树

如何创建一个行为树 行为树,类似于状态机,无非是在正确的时间在正确的条件下调用回调的一种机制。 此外,我们将会交替使用__“callback"和"tick”__这两个词。 这些回调函数里发生的事情取决于你。 在这个教程系列中,大部分时间,Actions 只会在控制台上打印一…

中国土地利用覆盖和变化数据集(1980-2021)

该数据集通过融合森林资源清查数据和20种遥感土地利用产品,重建生成了1980-2015年中国森林覆盖数据集,空间分辨率为11公里。并且在此基础上进一步获得高精度森林覆被信息和土地利用覆盖数据集相融合,生成了中国1980-2021年土地利用覆盖和变化…

Minio上传url资源文件,文件内容不全的问题

遇到问题 使用minio-client时候上传文件为url链接时候&#xff0c;上传inputstream流出现了文件上传成功&#xff0c;但是文件内容缺失&#xff0c;无法正常打开&#xff01; 先看看基本的依赖和配置代码&#xff1a; pom.xml依赖 <!-- tika MIME检测机制 --><depen…

Android NestedScrollView+TabLayout+ViewPager+ 其它布局,ViewPager 不显示以及超出屏幕不显示问题

前言 此场景为 NestedScrollView 嵌套多个布局 &#xff0c;大致结构为 NestedScrollViewTabLayoutViewPagerfragment 其它View,如下图 &#xff0c; 一、ViewPager 设置高度才会显示内容问题 原因&#xff1a;NestedScrollView 计算高度先于 ViewPager 渲染前&#xff0c;所…

电商跨境电商商城系统/网上商城接口/电商数据接口详情

电商API接口背景&#xff1a;电商运营中&#xff0c;数据分析这项工作越来越重要&#xff0c;许多品牌方也越来越热衷去做电商数据分析。不过&#xff0c;全面的数据该如何获取呢&#xff0c;此时&#xff0c;电商数据接口的重要性便凸显出来了。 电商API数据接口主要有以下特…

go 读取excel

一、安装依赖 go get github.com/tealeg/xlsx二、main.go package mainimport "fmt" import "github.com/tealeg/xlsx"type Student struct {Name stringSex string }func (student Student) show() {fmt.Printf("Name:%s Sex:%s\r\n", stude…