大家可以关注知乎或微信公众号的share16,我们也会同步更新此文章。
在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)))
有序类别和无序类别:可通过s.cat.as_unordered
和s.cat.reorder_categories
互相转化,需注意的是后者传入的参数必须是由当前序列的无序类别构成的列表,不能够增加新的类别,也不能缺少原来的类别,并且必须指定参数ordered=True,否则方法无效。
排序/大小:排序sort_index()、sort_values();大小>=、==等;
pd.cut(series,bins,right,labels,retbins,precision,include_lowest,duplicates,ordered)
pd.qcut(series,q,labels,retbins,precision,duplicates)
pd.Interval(left,right,closed)
pd.IntervalIndex
对象有四类方法生成,分别是from_breaks、from_arrays、from_tuples、interval_range;
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()
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()
谢谢大家