大家可以關注知乎或微信公眾號的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()
謝謝大家