pandas入门

Qt可以可以设计出艺术级别的界面,pandas可以帮助你成为数据分析大师。

一、数据导入

1、查询数据库数据(借助sqlalchemy实现)

import pandas as pd

from sqlalchemy import create_engine

url = "postgresql+psycopg2://%s:%s@%s:%s/%s" % (user, passwd, ip, port, dbname)

dbengine = create_engine(url, echo=False)

sql_select = pd.read_sql(sqlstr, con=dbengine)

2、read_xxx

pandas支持多种格式的导入(如下图)

常用的有:read_csv、read_excel及上文提到的read_sql。

注:read_csv不只可以读取*.csv文件,也可以读取SringIO对象,如下所示。

memstream = StringIO.StringIO()

memstream.write('colname1,colname2\n')

memstream.seek(0)

dataframe = pd.read_csv(memstream)

3、构造函数(以字典为例)

import pandas as pd

dataframe = pd.DataFrame([{'A':0},{'A':1}])
构造函数及参数如下所示:

4loc

dataframe = pd.DataFrame(columns=["column01", "column02"])

for i in xrange(5):

dataframe.loc[relation.shape[0] + 1] = {"column01": stacode, "column02": citystas[stacode]}

二、数据计算

1、通过一列计算新一列

方式1:map

dataframe = pd.DataFrame([{'A':0},{'A':1}])

dataframe ['B'] = map(lambda avalue:'True' if avalue == 0 else 'False', dataframe ['A'])

方式2:apply

def funcdict(data):

valuedict = {0:'True', 1:'False'}

return valuedict[data]

dataframe ['B'] = dataframe.apply(lambda rowvalue:funcdict(rowvalue['A']), axis=1)


2、通过多列计算新一列

方式1:map

dataframe = pd.DataFrame([{'A':0,'B':2},{'A':1,'B':-1}])

dataframe ['C'] = map(lambda valuea, valueb:valuea+valueb, dataframe ['A'], dataframe ['B'])

方式2:apply

def funcdict(data1,data2):

return data1 + data2

dataframe ['C'] = dataframe.apply(lambda rowvalue:funcdict(rowvalue['A'],rowvalue['B']), axis=1)

三、数据分析

1、dataframe数据关联

dataframe1 = pd.DataFrame([{'A':'a','B':2},{'A':'a','B':1}, {'A':'b','B':2},{'A':'b','B':1])

dataframe2 = pd.DataFrame([{'A':'a','E':4},{'A':'a','E':2}, {'A':'b','E':3},{'A':'b','E':1}])

dataframe = pd.merge(dataframe1, dataframe2, how='left')

pd.merge参数如下所示:


注:不同键值名键值关联如下:

dataframe1 = pd.DataFrame([{'A':'a','B':2},{'A':'a','B':1}, {'A':'b','B':2},{'A':'b','B':1])

dataframe2 = pd.DataFrame([{'C':'a','E':4},{'C':'a','E':2}, {'C':'b','E':3},{'C':'b','E':1}])

dataframe = pd.merge(dataframe1, dataframe2, left_on='A', right_on='C', how='inner')

2、组合分析

dataframe = pd.DataFrame([{'A':'a''B':2,'C':1,'D':6'E':4},{'A':'a''B':1,'C':3,'D':5'E':2},

             {'A':'b''B':2,'C':4,'D':6'E':3},{'A':'b''B':1,'C':3,'D':2'E':1}])

gpdataframe = dataframe.groupby(dataframe['A'], as_index=True)

funcdict = {'B':'sum','C':'max','D':'min','E':'mean'}

apidataframe = gpdataframe.agg(funcdict)

注:

  1、如果需要保留A所对应的列,as_index设为False即可

2、groupby可以以多列作为键值进行组合分析:

    gpdataframe = dataframe.groupby([dataframe['A'], dataframe['B']], as_index=True)

删除重复行

apidataframe.drop_duplicates

彩蛋:https://www.lfd.uci.edu/~gohlke/pythonlibs/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值