美文网首页
Adventure项目中函数总结

Adventure项目中函数总结

作者: Samdata | 来源:发表于2020-08-06 14:11 被阅读0次

    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函数的功能。


    相关文章

      网友评论

          本文标题:Adventure项目中函数总结

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