<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python改善生活 | 輕松實現(xiàn)APP自動化記賬

          共 3330字,需瀏覽 7分鐘

           ·

          2021-04-07 10:56

          前情回顧

          hi,我是小五

          不知道大家有沒有手動記賬的習慣,我大概從大學開始就堅持記賬,中途也換過幾個賬本APP。目前使用的是圈子賬本,它的記賬界面如下圖所示:

          再說說我現(xiàn)在的情況,畢業(yè)之后支出越來越多越瑣碎,每月的賬單多到再手動記賬有些過于浪費時間了。

          不過有幾點讓我注意到了,似乎可以實現(xiàn)自動化記賬:

          一是我目前支出首選信用卡(支付寶、微信也綁定信用卡),幾乎全部支出都在這里;

          二是圈子賬本可以通過上傳模板文件來直接上傳賬單,現(xiàn)在也支持支付寶賬單了;

          三是我的支出類別比較單一,主要就下面幾種:

          折中方案

          根據(jù)上面的幾點,我搞了個折中的方案,并一直用到現(xiàn)在。

          就是電腦登錄信用卡官網(wǎng),手動復制或者下載賬單。

          然后使用python調整成賬本官網(wǎng)支持的格式,導出成excel格式,直接上傳至官網(wǎng)。

          下面給大家對比一下操作前和操作后的格式:

          信用卡里的賬單:

          官網(wǎng)規(guī)定格式:

          操作實戰(zhàn)

          先手動復制賬單到excel里,先命名為測試數(shù)據(jù).xlsx

          然后我們開始使用python處理,導入數(shù)據(jù)

          df = pd.read_excel('測試數(shù)據(jù).xlsx',header = None)
          df.head(6)

          ??每隔三行其實是一條數(shù)據(jù),所以我們要跳行提取數(shù)據(jù)

          df2 = pd.DataFrame(columns=['日期','時間','入賬金額','交易說明'])

          df2['日期'] = df.iloc[[ i+1 for i in range(0,len(df),3)],[0]].reset_index()[0]
          df2['時間'] = df.iloc[[ i+2 for i in range(0,len(df),3)],[0]].reset_index(drop=True)
          df2['入賬金額'] = df.iloc[[ i+1 for i in range(0,len(df),3)],[1]].reset_index(drop=True)
          df2['交易說明'] = df.iloc[[ i+2 for i in range(0,len(df),3)],[1]].reset_index(drop=True)

          創(chuàng)建了一個df2,并從df中隔行提取數(shù)據(jù),結果如下

          調整格式

          下一步調整格式,先參考目標格式要求:

          df2['時間'] = df2['日期'].apply(lambda x : str(x).replace('00:00:00','')) + df2['時間'].apply(lambda x : str(x)[:-3])
          df2['入賬金額'] = df2['入賬金額'].str.lstrip('入賬金額:¥')
          df2['交易說明'] = df2['交易說明'].str.lstrip('交易說明:財付通公司-')
          df2 = df2.drop(columns = '日期')

          這樣我們就調整好了時間入賬金額(金額)交易說明(備注),還剩下一個關鍵的值就是類別,其實我自己的消費類別沒幾個,可以簡單的利用交易說明判斷類別,無法分辨的類別歸為其他。

          def fenlei(comment):
              if '美團' in comment or '拉扎斯'in comment:
                  data = "餐飲"
              elif '花小豬'in comment or '滴滴'in comment:
                  data = "交通"
              elif '燃氣'in comment or '電費'in comment:
                  data = "水電燃氣"
              elif '拼多多'in comment:
                  data = "生活用品"
              else:
                  data = "其他"
              return data

          利用上面的函數(shù),就可以統(tǒng)計出類別這一列的值。

          其中拉扎斯指的是餓了么,大家查一下自己賬單就知道了。至于其他的種類,大家根據(jù)自己實際情況改改就可。

          另外再添加另外兩個固定列,就齊了。

          df2['分類'] = df2.apply(lambda x :fenlei(x['交易說明']), axis=1)
          df2 = df2[df2['入賬金額'].astype(float) > 0]
          df2['類型'] = '支出'
          df2['賬戶'] = '交通銀行'
          df2.head()

          ??這里面我還篩選了只大于0的入賬金額,這是為了排除還款記錄。

          注:還款記錄在信用卡賬單里是負值

          最后結果如下圖所示:

          導出數(shù)據(jù)

          由于這次導出數(shù)據(jù)要固定格式,所以使用了openpyxl來向官網(wǎng)模板中直接寫入,這樣導入比較規(guī)范。

          workbook = load_workbook(filename="朱小五.xlsx")
          sheet = workbook.active
          df2 = df2.iloc[:,[4,0,3,1,5,2]]
          # 先刪除第4行之后的舊數(shù)據(jù),預計1000行完全夠用
          sheet.delete_rows(idx=2, amount=1000)
          # 然后在進行添加數(shù)據(jù)
          for row in df2.values.tolist():
              sheet.append(row)
              print(row)
          print("已經(jīng)保存到文件中")
          workbook.save(filename="朱小五.xlsx")
          workbook.close()

          打開朱小五.xlsx,查看結果

          沒什么問題,將Excel導入賬本官網(wǎng)中

          完美導入
          再打開手機記賬APP
          發(fā)現(xiàn)賬單已經(jīng)安安靜靜地躺在賬本里啦!

          以上就是小五平時利用Python自動化處理自己賬本的全部內容了。

          如果喜歡我的文章,記得點贊支持哦~

          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲最新无码视频 | 手机看片一区二区三区 | 涩涩大香蕉 | 中文字幕AV在线观看 | 中文字幕不卡+婷婷五月 |