美文网首页数据蛙数据分析每周作业
秦路《七周》Python部分(109-121) ---- 代

秦路《七周》Python部分(109-121) ---- 代

作者: 小T数据站 | 来源:发表于2018-12-13 17:35 被阅读13次

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)
建议先在数据库里建表设定好字段类型

相关文章

网友评论

    本文标题:秦路《七周》Python部分(109-121) ---- 代

    本文链接:https://www.haomeiwen.com/subject/gayehqtx.html