Shift + Tab: 查看函数的参数
读取数据
pd.read_csv("(文件目录)+文件名",encoding="数据源编码格式,默认utf-8",sep="分隔符,默认是逗号 ',' ")
df.head(n):查看数据框的前n行,默认为5
df.tail(n):查看数据框的末n行,默认为5
df.info():对数据框各列的数据类型进行概览
df.column_name.astype('str/int/float/...'):更改某列的数据类型
简单的数据处理
df.ix/loc/iloc :利用索引筛选数据
df.query('条件').column_name:进行快速筛选
df.T:行列转置
df.sort_values(by = 'column_name'/['column_name1','coumn_name2',...],ascennding = ):按某列或某几列对数据框进行排序
df.sort_index():按索引对数据框进行排序
df.column_name.rank(ascending=,method = 'average/min/max/first'):按某列得到的排名
df.column_name.unique():取某列的唯一值
df.column_name.value_counts():对某列的唯一值进行计数
df.describe:对数据框进行简单的描述统计
df.column_name.cumsum():对某列数值进行累加
pd.cut(df.column_name,bins = 等分数量,lables = '分组标签')
或者pd.cut(df.column_name,bins = (0,5,10,20,100),lables = '分组标签')
pd.qcut():分位数切割
聚合
df.groupby(by = 'column_name').count/max/min/.../mean():按某列聚合出相应方法下的值
for k,v in df.groupby(by = 'column_name1'):
print(max(v.column_name2)-min(v['column_name2']))
print('**' *10) # 分割线
关联
merge、join、concat
1.merge:使用数据框的某一列进行关联
关联列名相同:
df1.merge(right = df2,how = left/right/inner/outer,on='id')
关联列名不同:
df1.merge(right = df2,how = left/right/inner/outer,,left_on = 'left_id',right_on = 'right_id')
pd.merge(left=,right=,how=,on=,left_on=,right_on=)
2.join:使用索引进行关联
df1.join(df2)
3.concat:merge、join常用于左右联结,concat通过参数axis(默认值为0,进行上下联结,1是进行左右联结),通常使用axis=1进行左右联结
pd.concat([df1,df2])
多重索引
假设一个数据框df有两个索引:index1、index2
①df.column_name['index1-value']['index2_value']
②df.loc['index1_value','index2_value']
将字段变为索引:
df.sort_values(by = ['column_name1','column_name2'].index(['column_name1','column_name2'])
将索引变为字段 :使用reset_index()
预处理函数
df.column-name.str[1:-1]:去除文本两边的"[ ]"
(举例:['数据','分析师'] 处理成 '数据','分析师'
df.column_name.str[1:-1].str.replace[" ' ",""]:文本替换
df.fillna(用以替换缺失值的值)
dropna():删除存在缺失值的行
df.duplicated(keep = 'first/last'):寻找重复的数据
df.drop_duplicates():去除重复值
pandas apply
df.salary.apply(lambda x:str(x) + 'k')
以下是按column_name分组,每组的前n个值:
def func(x,n):
r = x.sort_values('salary',ascending=False)
return r[:n]
df.groupby('column_name').apply(func,n=)
df.groupby('column_name').agg(['函数名1','函数名2',...])
数据透视表
df.pivot_table(index = ,columns = ,values = ,aggfunc =)
df.pivot_table(index = ,columns = ,
values = ['column_name1','column_name2'],
aggfunc ={column_name1:np.mean,column_name2:p.sum})
Python连接数据库
安装pymysql模块:
在命令提示符窗口输入:
pip install pymysql
读取数据库
import pymysql
conn = pymusql.connect(host = 'localhost/127.0.0.1',
user = 'user_name',password = ,db = ,port =3306,charset ='utf8')
cur = conn.cursor() #建立游标(sql知识点)
cur.execute('select * from table') #查询数据
data = cur.fetchall() #提取数据
conn.commit() #提交对数据的修改
cur.close() #关闭游标
conn.close() #关闭连接
使用pandas将数据读取为数据框格式:
import pymysql
import pandas as pd
from sqlalchemy import creat_engine
sql = 'select * from table'
engine = create_engine('mysql+pymysql://username:password@localhost:3306/database_name?charset=utf8')
df = pd.read_sql(sql,engine)
也可以包装成函数:
def reader(query,db = 'table_name',sql = query,
engine = create_engine('mysql+pymysql://username:password@localhost:3306/{0}?charset=utf8'.format(database_name))
写入数据库
df.to_sql(name = 'table_name',con ='mysql+pymysql://username:password@localhost:3306/database_name?charset=utf8',
if_exists ='append',index =False)
建议先在数据库里建表设定好字段类型
网友评论