当前位置:网站首页>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()
谢谢大家
边栏推荐
猜你喜欢
ESP32 485 Illuminance
Database experiment five backup and recovery
2022 Hangzhou Electric Multi-School 1st Session 01
【过一下10】sklearn使用记录
CAP+BASE
pycharm中调用Matlab配置:No module named ‘matlab.engine‘; ‘matlab‘ is not a package
Flutter真机运行及模拟器运行
【过一下8】全连接神经网络 视频 笔记
SQL(二) —— join窗口函数视图
【练一下1】糖尿病遗传风险检测挑战赛 【讯飞开放平台】
随机推荐
human weakness
CAP+BASE
OFDM Lecture 16 5 -Discrete Convolution, ISI and ICI on DMT/OFDM Systems
学习总结week3_2函数进阶
学习总结week3_1函数
Error creating bean with name 'configDataContextRefresher' defined in class path resource
类的底层机制
Lecture 4 Backpropagation Essays
Qt produces 18 frames of Cupid to express his love, is it your Cupid!!!
数据库 单表查询
"Recursion" recursion concept and typical examples
实现跨域的几种方式
Reverse theory knowledge 4
位运算符与逻辑运算符的区别
Basic properties of binary tree + oj problem analysis
Transformation 和 Action 常用算子
[Decoding tools] Some online tools for Bitcoin
The fourth back propagation back propagation
coppercam primer [6]
day10-字符串作业