Adventure项目中函数总结

pandas与MySQL连接和储存

MySQL连接——pymysql

import pandas as pd

import pymysql

pymysql.install_as_MySQLdb()

from sqlalchemy import create_engine

engine = create_engine('dialect+driver://username:password@host:port/database')

df=pd.read_sql("select * from xxx",con=engine)

dialect -- 数据库类型

driver -- 数据库驱动选择

username -- 数据库用户名

password -- 用户密码

host 服务器地址

port 端口

database 数据库

MySQL储存

engine = create_engine('dialect+driver://username:password@host:port/database')

df.to_sql('表名', con=engine, index= ,if_exists = ' ')

name: 输出的表名

con: 与read_sql中相同,数据库链接

if_exits: 三个模式:fail,若表存在,则不输出;replace:若表存在,覆盖原来表里的数据;append:若表存在,将数据写到原表的后面。默认为fail

index:是否将df的index单独写到一列中,False或True,默认为False


时间数据datetime与str的转换

时间数据格式之间的相互转换:

from datetime import datetime

(1)datetime.datetime 转str:

 b = datetime.now().strftime('%Y-%m-%d')

(2)str 转datetime.datetime

 d = datetime.strptime(b, '%Y-%m-%d')  # strptime()内参数必须为string格式

 (3)str 转 datetime.date

  先将str转datetime,再转datetime.date

  e = datetime.date(d) # date()内参数需要datetime.datetime型

  (4)datetime.date转str

   h = str(e)


来自 <https://blog.csdn.net/zhonglongshen/article/details/88820848>

环比的计算

diff函数

函数原型:

DataFrame.diff(periods=1, axis=0)

效果等于:

df-df.shift()

参数:

periods:移动的幅度,int类型,默认值为1。

axis:移动的方向,{0 or ‘index’, 1 or ‘columns’},如果为0或者’index’,则上下移动,如果为1或者’columns’,则左右移动。

diff()应用:


第一种:

overall_sales_performance['sum_amount_diff']=(overall_sales_performance.sum_amount.diff()/overall_sales_performance.sum_amount.shift()).fillna(0)

第二种:

#求每月自行车销售订单量环比,观察最近一年数据变化趋势

#环比是本月与上月的对比,例如本期2019-02月销售额与上一期2019-01月销售额做对比

order_num_diff = list((overall_sales_performance.order_num.diff()/overall_sales_performance.order_num.shift()))

order_num_diff.pop(0) #删除列表中第一个元素

order_num_diff.insert(0,0) #将0新增到列表末尾

overall_sales_performance = pd.concat([overall_sales_performance,pd.DataFrame(order_num_diff)])

pct.change()函数

DataFrame.列名.pct_change(periods=1, fill_method=‘pad’, limit=None, freq=None, **kwargs)

表示当前元素与先前元素的相差百分比,当然指定periods=n,表示当前元素与先前n 个元素的相差百分比。


pandas取消科学计数法

pd.set_option('display.float_format', lambda x: '%.3f' % x)


sort_values, DataFrame排序:

df.sort_values(by= , axis= , ascending= , inplace=)

#axis=0表示对行操作,axis=1表示对列进行操作;ascending=True表示升序,ascending=False表示降序;inplace=True表示对原始DataFrame本身操作,因此不需要赋值操作,inplace=False相当于是对原始DataFrame的拷贝,之后的一些操作都是针对这个拷贝文件进行操作的,因此需要我们赋值给一个变量,保存操作后的结果。


list排序

list.sort(cmp=None, key=None, reverse=False)

参数

cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

# 获取列表的第二个元素

def takeSecond(elem):

    return elem[1] 

random = [(2, 2), (3, 4), (4, 1), (1, 3)]

random.sort(key=takeSecond)  

print(random)

以上实例输出结果如下:

排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]


dataframe去重,将某列元素提取到列表中

df.drop_duplicates(['列名'])

此种去重方法,会让元素按照dataframe的顺序填充到列表中

list(gather_customer_order_10_11_group.drop_duplicates(['chinese_territory']).chinese_territory)

df.列名.unique()

此种方法去重后,元素并未按照dataframe顺序填充到列表中,之后操作,需要注意。必要时候采用sort_index()

list(gather_customer_order_10_11_group['chinese_territory'].unique())


示例

agg的用法和使用范围

用法

DataFrame.agg(funcaxis = 0* args** kwargs 

func : 函数,函数名称,函数列表,字典{‘行名/列名’,‘函数名’}

使用范围:

1.agg与dataframe一同使用,对一列或一行进行聚合计算

2.agg与groupby一同使用,对groupby之后的一行或一列进行聚合计算,此方法使用更为广泛。


loc、iloc、at、iat的区别

1、 loc和iloc函数都是用来选择某行的,iloc与loc的不同是:iloc是按照行索引所在的位置来选取数据,参数只能是整数。而loc是按照索引名称来选取数据,参数类型依索引类型而定;

2、 at和iat函数是只能选择某个位置的值,iat是按照行索引和列索引的位置来选取数据的。而at是按照行索引和列索引来选取数据;

3、 loc和iloc函数的功能包含at和iat函数的功能。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343