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

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_engineengine = 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 typesdtype = {'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 pddf = 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.xdnf.cn/news/147836.html

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

相关文章

Azure Pipeline 常用任务记录

各种任务的查询: 任务查询 下载类 1 DownloadPackage1 从 Azure Artifacts 中的包管理源下载包 2 DownloadSecureFile1 下载安全文件,这里的安全文件在Library中上传,默认的位置会传到$(Agent.TempDirectory) 3 DownloadBuildArtifacts1…

shopify主题开发中给产品页设置多个模板

在shopify开发中,有时候商家可能需要为不同的产品去设置自己想要的产品页模板。下面主要教大家如何为产品类型页面设置多个模板,大家只要按照下面几个步骤就可以轻松实现产品的定制化页面: 1、首先在定制器创建产品模板 进入商品自定义页面…

【LangChain系列】实战案例5:用LangChain实现灵活的Agents+RAG,该查时查,不该查时就别查

目前为止,我们实现的RAG练习中,答案都是全部来源于检索到的文本内容。而检索过程可能在某些情况下是不需要的。 如何优化这个过程,让我们的RAG程序在必要时才去检索,不必要时,直接使用大模型原有数据来回答呢&#xf…

M2型TAM靶向肽CRV; Ahx-CRVLRSGSC ;

【M2型TAM靶向肽CRV 简介】 M2型TAM靶向肽CRV是一种用于靶向肿瘤相关巨噬细胞(TAMs)中M2型亚群的多肽。这种多肽序列为CRVLRSGSC,包含一对二硫键,其三字母代码为Cys-Arg-Val-Leu-Arg-Ser-Gly-Ser-Cys(Cys-Cys&#xff…

什么是json?

JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法),基于 ECMAScript,存放的是的类似于键值对,本质上来说是javascript的数据类型,是一种轻量级的数据交互格式,简单来说呢,json就是一…

万博智云CEO王嘉在华为全联接大会:以创新云应用场景,把握增长机遇

一、大会背景 2024年9月19-21日,第九届华为全联接大会将在上海世博展览馆和上海世博中心举办。作为华为的旗舰盛会,本次大会以“共赢行业智能化”为主题邀请了众多思想领袖、商业精英、技术专家、合作伙伴、开发者等业界同仁,从战略、产业、…

NS2159 1A 线性锂离子电池充电管理IC

1 特性 ● 输入电压范围 4.5V-26V ● 输入过压保护电压 6.0V ● 用于单节锂离子电池线性工作模式充电 ● 支持 0V 电池电压充电 ● 涓流/恒流/恒压三段式充电 ● 内部预设 4.2V 充电浮充电压 ● 1A 可编程充电电流 ● C/10 充电终止功能 ● 内置自动复充功能 ● 内置过温保护功…

51单片机-DA(数字转模拟)(呼吸灯)

作者:Whappy 个人理解:将电压或电流信号进行等分或不等分(高电平的电压范围和低电平的范围,如0-5v,0-1.8位低电平,3.8-5v为高电平),同样也是通过采样,量化等操作将不连续…

智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来

文章目录 一、AIGC时代的算法与模型训练概览二、算法与模型训练的关键环节三、AI训练师的角色与职责四、AI训练师的专业技能与素养五、AIGC算法与模型训练的未来展望《AI训练师手册:算法与模型训练从入门到精通》亮点内容简介作者简介谷建阳 目录 《医学统计学从入门…

2024图纸加密软件最佳选择!10款超好用的图纸加密软件推荐!

随着企业对数据安全的重视不断提升,尤其是在涉及重要设计图纸等机密文件的管理上,选择一款高效且安全的图纸加密软件显得尤为重要。2024年,我们精选了10款超好用的图纸加密软件,帮助企业保护知识产权与机密数据的安全。 1.安秉图纸…

多语言文本 AI 情感分析 API 数据接口

多语言文本 AI 情感分析 API 数据接口 AI / 文本处理 AI 模型快速分析文本情感倾向 多语言文本 / 情感分析。 1. 产品功能 支持多语言文本情感分析;基于特定 AI 模型,快速识别文本情感倾向;适用于评论分析、舆情监控等场景;全接…

2024/9/23 leetcode 148题 排序链表

目录 148.排序链表 题目描述 题目链接 解题思路与代码 148.排序链表 题目描述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入&am…

【Python】入门学习1:开发前的准备

准备工作: 1、电脑系统:windows 64位; 2、python学习所需工具:“解释器、编译器”; (1)python 解释器:解释代码的,把 python 计算机语言翻译给计算机认识;…

双通道隔离驱动之选,SLMi823x系列SLMi8235BDCG-DG可编程死区满足您需求

SLMi823x系列SLMi8235BDCG-DG双通道死区可编程的隔离驱动器。SLMi823x系列SLMi8235BDCG-DG配置为双输入,双输出驱动器。另外,SLMi823x系列SLMi8235BDCG-DG峰值输出电流为 4.0A。 所有输出驱动器的 VDDA/B 电源电压最高到40V。3V 至 18V 的 VDDI 宽范围输…

git用ssh来拉去代码

参考资料 5分钟 git配置ssh_哔哩哔哩_bilibili Git怎么使用SSH从GitLab上拉取代码_gitlab ssh-CSDN博客 gitlab怎么配置通过ssh来拉取代码_gitlab ssh 拉代码-CSDN博客 执行的命令:(需要在你本地.ssh文件夹下执行) ssh-keygen -t rsa -b 4096 -C "你的邮箱" ss…

PHPstorm 安装汉化包失败解决方法

错误信息: Plugin "chinese (Simplified) Language Pack/中文语言包" was not installed: invalid filename returned by a server 原因 :官方的包和软件的版本不对应,下载对应的汉化包就行了 官网汉化包: Chinese (…

Linux C——网络编程

本案例运行环境:Ubuntu 12.04.1 LTS 1、基本概念 网络的七层模型: 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 其中:1、2、3层主要面向通过网络端到端的数据流, 4、5、6、7层定义了程序的功能 …

抱歉占用公共资源,大家别猜啦,我们在一起了@Yaker

家人们上午好呀 这里是超绝脱单牛一枚 没错,我和Yaker有一个孩子(bushi 今天我们的孩子YakLang来给大家介绍介绍,ta对块作用域的处理方式 在编程中,作用域(Scope)指的是变量、函数和对象的可访问性和生命…

Java反序列化CC1-TransformedMap链学习

学习参考:Java反序列化CC1链TransformedMap 核心是要学会基本EXP编写,还有怎么找传递链。 链子尾部 这里有一个能反射调用任意类,任意方法的: 以这个漏洞点写EXP,由于这个是public的InvokerTransformer,所…

如何基于scrcpy改造实现大厂一键连招/触摸宏功能(带java源码)-千里马安卓framework实战

背景: 前面公众号文章已经分享过如何实现这种大厂里面一键连招,触摸宏的功能,原理本身是对dev/input下面的节点进行读取保存文件,然后在读取文件进行写入dev/input下面的节点,从而实现了触摸事件的读取和写入&#xf…