当前位置:网站首页>Pandas(五)—— 分类数据、读取数据库
Pandas(五)—— 分类数据、读取数据库
2022-08-05 05:13:00 【share16】
Python模块 —— Pandas
Pandas(五)—— 分类数据、读取数据库
大家可以关注知乎或微信公众号的share16,我们也会同步更新此文章。
九、分类数据
9.1 cat对象
在pandas中提供了category类型,使用户能够处理分类类型的变量,将一个普通序列转换成分类变量可以使用astype方法;
import pandas as pd
df = pd.DataFrame([['A',19,120],['B',20,128],['C',19,115]],columns=['name','age','score'])
s = df.score.astype('category')
''' 属性 '''
ls1 = ['s的数据类型','类似于type','以Index类型存储','是否有序','赋予编号(取决于cat.categories中的顺序)']
ls2 = ['s.dtype','s.cat','s.cat.categories','s.cat.ordered','s.cat.codes']
print('\033[1;31m···cat对象的属性···\033[0m')
for i,j in zip(ls1,ls2):
print('{}({})的运行结果:\n{}\n'.format(j,i,eval(j)))
''' 增删改 '''
ls3 = ['增','删(若不存在,返回错误)','删除未出现在序列中的类别','改','set']
ls4 = ['s.cat.add_categories(90)','s.cat.remove_categories(115)','s.cat.remove_unused_categories()',\
's.cat.rename_categories({115:135})','s.cat.set_categories([115,120])']
print('\033[1;31m···cat对象的增删改查···\033[0m')
for i,j in zip(ls3,ls4):
print('{}({})的运行结果:\n{}\n'.format(j,i,eval(j)))


9.2 有序分类
有序类别和无序类别:可通过s.cat.as_unordered和s.cat.reorder_categories互相转化,需注意的是后者传入的参数必须是由当前序列的无序类别构成的列表,不能够增加新的类别,也不能缺少原来的类别,并且必须指定参数ordered=True,否则方法无效。
排序/大小:排序sort_index()、sort_values();大小>=、==等;
9.3 区间类别
9.3.1 利用cut和qcut进行区间构造
pd.cut(series,bins,right,labels,retbins,precision,include_lowest,duplicates,ordered)
pd.qcut(series,q,labels,retbins,precision,duplicates)
- bins:可为int/序列; q:可为int/列表(由浮点数组成),即分位数;
- labels:返回的bin的标签;默认None,还可为False/数组;若为True,则引发错误;
9.3.2 一般区间的构造
pd.Interval(left,right,closed)
- 参数left和right必须是同一类型,且要满足left <= right;
- closed:默认right,还可取值left、both、neither;
pd.IntervalIndex 对象有四类方法生成,分别是from_breaks、from_arrays、from_tuples、interval_range;
- from_breaks:类似于cut/qcut函数,区别是:cut/qcut是通过计算得到的分割点,而from_breaks是直接传入自定义的分割点;
- from_arrays:是分别传入左端点和右端点的列表,适用于有交集并且知道起点和终点的情况;
- from_tuples:传入的是起点和终点元组构成的列表;
- interval_range:由参数start、end、periods、freq构成;
十、读取数据库
10.1 连接数据库
- 导入模块 pymysql;
- 相关代码(建立连接、创建游标、执行sql查询、获取数据、关闭连接):
import pymysql
''' 1.建立连接 '''
conn = pymysql.connect(host='localhost', # 还可以是'127.0.0.1'
user='用户名',password='密码',
database='库名',port=3306,
charset='utf8')
''' 2.创建游标 '''
cur = conn.cursor()
''' 3.执行sql查询 '''
cur.execute('mysql语句') # 必须要有此句,否则data执行错误
''' 4.获取数据 '''
data = cur.fetchall()
# 此外还可为fetchmany(size)、fetchone();
# 以元组形式返回,表中每一行又是一个小元组;
# 每次更新execute中的语句时,其后面的一系列如data等,也要进行更新;
# 若要执行‘增删改更新’,要有conn.commit(),提交到数据库执行;
''' 5.关闭 '''
cur.close()
conn.close()
10.2 read_sql
- 导入模块 sqlalchemy.create_engine、pandas;
- 相关连接,如下;
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://用户名:密码@ip:端口/库名?charset=utf8')
sql = 'mysql语句'
df = pd.read_sql(sql,engine)
df.head()
谢谢大家
边栏推荐
猜你喜欢

SQL(二) —— join窗口函数视图
![LeetCode: 1403. Minimum subsequence in non-increasing order [greedy]](/img/99/41629dcd84e95eb3672d0555d6ef2c.png)
LeetCode: 1403. Minimum subsequence in non-increasing order [greedy]

The fourth back propagation back propagation

使用二维码解决固定资产管理的难题
![[cesium] element highlighting](/img/99/504ca9802db83eb33bc6d91b34fa84.png)
[cesium] element highlighting

A blog clears the Redis technology stack

DOM及其应用

『递归』递归概念与典型实例

Multi-threaded query results, add List collection

Flutter real machine running and simulator running
随机推荐
NodeJs接收上传文件并自定义保存路径
机器学习(二) —— 机器学习基础
「PHP8入门指南」PHP简明介绍
解决端口占用问题
Qt produces 18 frames of Cupid to express his love, is it your Cupid!!!
range函数作用
有用番茄来监督自己的同道中人吗?加一下我的自习室,一起加油
第四讲 back propagation 反向传播
【解码工具】Bitcoin的一些在线工具
UVA10827
Community Sharing|Tencent Overseas Games builds game security operation capabilities based on JumpServer
Returned object not currently part of this pool
redis 缓存清除策略
学习总结week3_2函数进阶
【过一下12】整整一星期没记录
redis persistence
【过一下15】学习 lstm的一周
Machine Learning (2) - Machine Learning Fundamentals
开发一套高容错分布式系统
【过一下11】随机森林和特征工程