Python:聚合函式(groupby)
一堆廢話
不知不覺都12月12日了。
如果再不寫CSDN,我的持之以恆勳章就要消失了!
記得去年的雙十二,是真的大打折了!上證一天跌了2.47%,近400只股票跌停。
我還清晰地記得,那天是一路下跌。中午收盤已經跌了接近1.7%了。
在食堂吃飯的時候,除了恐慌,腦子一片空白…(畢竟我在潘老闆的帶領下,也到市場裡走了一圈的。而且那個時候啥都不懂)
今天也是雙十二,又來打折。不過我看著你們跌就好了。
我也不去像某些人一樣,整天吼著買哪隻哪隻股票,或者全倉抄底啥的,儘管我已經通過了釋出證券研究報告業務資格的考試。
反正一漲一跌,一半的時間能猜中。而且這種空頭排列,你就猜跌,多頭排列,你就跟風喊漲。更有可能命中。
股市這東西,整天盯著布朗運動看幾個小時,累不累?
買入配置型倉位,然後做實業去,挺好的…
國家隊都說了,我們股市波動如此之大,就是因為有太多的趨勢交易者,太多的追漲殺跌!
正題
一天的交易結束後,根據交易流水,要生成持倉彙總。
所以推薦使用py的聚合函式,groupby。
案例程式碼演示是這樣的。
import pandas as pd
df = pd.read_excel('trade.xlsx')
df
證券程式碼 | 證券名稱 | 買賣方向 | 數量 | |
---|---|---|---|---|
0 | 601318 | 中國平安 | 買入 | 100 |
1 | 601398 | 工商銀行 | 買入 | 100 |
2 | 600050 | 中國聯通 | 買入 | 100 |
3 | 601318 | 中國平安 | 賣出 | 100 |
4 | 601318 | 中國平安 | 買入 | 200 |
5 | 600050 | 中國聯通 | 買入 | 100 |
6 | 600050 | 工商銀行 | 賣出 | 100 |
df_grp = df.groupby(['證券程式碼', '買賣方向']).sum()
df_grp
數量 | ||
---|---|---|
證券程式碼 | 買賣方向 | |
600050 | 買入 | 200 |
賣出 | 100 | |
601318 | 買入 | 300 |
賣出 | 100 | |
601398 | 買入 | 100 |
tmp_df = df.copy()
tmp_df.index = [df['證券程式碼'], df['買賣方向']]
tmp_df
證券程式碼 | 證券名稱 | 買賣方向 | 數量 | ||
---|---|---|---|---|---|
證券程式碼 | 買賣方向 | ||||
601318 | 買入 | 601318 | 中國平安 | 買入 | 100 |
601398 | 買入 | 601398 | 工商銀行 | 買入 | 100 |
600050 | 買入 | 600050 | 中國聯通 | 買入 | 100 |
601318 | 賣出 | 601318 | 中國平安 | 賣出 | 100 |
買入 | 601318 | 中國平安 | 買入 | 200 | |
600050 | 買入 | 600050 | 中國聯通 | 買入 | 100 |
賣出 | 600050 | 工商銀行 | 賣出 | 100 |
tmp_df.drop_duplicates(['證券程式碼','買賣方向'], inplace=True)
tmp_df
證券程式碼 | 證券名稱 | 買賣方向 | 數量 | ||
---|---|---|---|---|---|
證券程式碼 | 買賣方向 | ||||
601318 | 買入 | 601318 | 中國平安 | 買入 | 100 |
601398 | 買入 | 601398 | 工商銀行 | 買入 | 100 |
600050 | 買入 | 600050 | 中國聯通 | 買入 | 100 |
601318 | 賣出 | 601318 | 中國平安 | 賣出 | 100 |
600050 | 賣出 | 600050 | 工商銀行 | 賣出 | 100 |
other_cols = list(set(tmp_df.columns) - set(df_grp.columns))
df_sum = pd.concat([df_grp, tmp_df.loc[:, other_cols]], axis=1)
df_sum
數量 | 證券名稱 | 證券程式碼 | 買賣方向 | ||
---|---|---|---|---|---|
證券程式碼 | 買賣方向 | ||||
600050 | 買入 | 200 | 中國聯通 | 600050 | 買入 |
賣出 | 100 | 工商銀行 | 600050 | 賣出 | |
601318 | 買入 | 300 | 中國平安 | 601318 | 買入 |
賣出 | 100 | 中國平安 | 601318 | 賣出 | |
601398 | 買入 | 100 | 工商銀行 | 601398 | 買入 |
上面的案例,py程式碼在附在下面。
# coding: utf-8
import pandas as pd
df = pd.read_excel('trade.xlsx')
df_grp = df.groupby(['證券程式碼', '買賣方向']).sum()
tmp_df = df.copy()
tmp_df.index = [df['證券程式碼'], df['買賣方向']]
tmp_df.drop_duplicates(['證券程式碼','買賣方向'], inplace=True)
other_cols = list(set(tmp_df.columns) - set(df_grp.columns))
df_sum = pd.concat([df_grp, tmp_df.loc[:, other_cols]], axis=1)
相關推薦
Python:聚合函式(groupby)
一堆廢話 不知不覺都12月12日了。 如果再不寫CSDN,我的持之以恆勳章就要消失了! 記得去年的雙十二,是真的大打折了!上證一天跌了2.47%,近400只股票跌停。 我還清晰地記得,那天是一路下跌。中午收盤已經跌了接近1.7%了。 在食堂
Python:如何排序(sort)
處理 大小 內建函數 objects border secondary ssa sorted ims 一、前言 Python的列表(list)有兩個排序方法: 一種是內建的list.sort()方法,可以直接改變列表的內容: >>> list1
zabbix:聚合檢測(aggregate)的簡介
在我們部署服務時,很多時候是幾臺伺服器承載一個服務,如果我們想監控這幾臺伺服器某個key的總和值,就得用到此處的zabbix Aggregate。 使用條件: 1、所有計算均位於同一個Host Group中,關聯模板相同,都具備相關相同的模板。 2、新建模板,Item Type為“Z
python :collections模組(3)Counter模組以及deque模組
#Counter模組 統計型別類,定義跟蹤值出現的次數 引數為必須為可迭代物件,如列表,字串,集合 #統計集合中元素出現的次數 from collections import Counter #統計類 users ={"body_1","body_3","bod
【TeeChart Pro ActiveX教程】(七):使用函式(下)
下載TeeChart Pro ActiveX最新版本 在上一篇文章中,我們介紹到了在Teechart Pro ActiveX中的功能特點和新增功能,今天我們接著講定義資料來源、功能期間和週期樣式 (一)定義資料來源 上一節中的示例重點介紹如何使用Datasource通過程式碼填充Function.S
【TeeChart Pro ActiveX教程】(七):使用函式(上)
下載TeeChart Pro ActiveX最新版本 功能型別 1 功能特點 TeeChart Pro功能是一個系列,幾乎可以是任何系列型別,應用代數函式,資料來源是另一個圖表系列。 所有函式都派生自Teefunction類並繼承TeeFunction的Period屬性。 TeeCh
python之內建函式(一)
一、內建函式一1、內建函式總覽 abs() dict() help() min() setattr()all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate()
床頭筆記之Python程式設計實用函式(一)
Python count() 方法: 統計次數 用於字串str count() 方法用於統計字串裡某個字元出現的次數。可選引數為在字串搜尋的開始與結束位置。 str.count(sub, start= 0,end=len(string)) 引數 sub – 搜尋
床頭筆記之Python程式設計實用函式(二)
python字典dict排序與sorted函式 sorted(iterable[, cmp[, key[, reverse]]]) 引數說明: iterable – 可迭代物件。 cmp --比較的函式,這個具有兩個引數,引數的值都是從可迭代物件中取出,此函
python中的函式(一)
接觸過C語言的朋友對函式這個詞肯定非常熟悉,無論在哪門程式語言當中,函式(當然在某些語言裡稱作方法,意義是相同的)都扮演著至關重要的角色。今天就來了解一下Python中的函式用法。 一.函式的定義 在某些程式語言當中,函式宣告和函式定義是區分開的(在這些程式語言當中函式宣
python內建函式(二)之filter,map,sorted
filter filter()函式接收一個函式 f 和一個iterable的物件,這個函式 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件(False)的元素,返回由符合條件元素組成的新可迭代filter物件。
python基礎 6 函式(二)
1函式的引數 在Python中函式引數的定義方式有以下4種方式 1位置引數 2關鍵字引數 3預設引數 4可變引數 2位置引數 實參和形參一一對應,按位置來傳遞引數
python學習筆記——函式(三)
今天我們學習函式最後一部分 一 .函式:內嵌函式與閉包 (1)函式中如何修改全域性變數且對全域性產生影響?? (2)函式中是否可以再巢狀函式?? (3)倘若可以巢狀函式,內部函式是否可以引用外部函式的變數?? 帶著問題進入學習——> 1
Hive通用型自定義聚合函式(UDAF)
計算器必須實現的方法: 1、getNewAggregationBuffer():返回儲存臨時聚合結果的AggregationBuffer物件。 2、reset(AggregationBuffer agg):重置聚合結果物件,以支援mapper和reducer的重用。 3、iterate(Aggregati
Cris 的 Python 資料分析筆記 03:NumPy 矩陣運算和常用函式(重點)
03. 矩陣運算和常用函式(重點) 文章目錄 03. 矩陣運算和常用函式(重點) 1. numpy 矩陣判斷和計算 1.1 與運算 1.2 或運算 1.3 或運算作為矩陣索引賦值
Python基礎(9):高階函式(map,reduce,filter,sorted)
高階函式 定義:一個函式,可以接收另一個函式作為引數,這種函式稱之為高階函式。 理論基礎: 1:函式可以接收變數 2:函式名是指向函式的變數。 例如:abs,原本指向一個計算絕對值的函式,將他指向123後,abs變數就不再具有計算絕對值的能力。 map/
python 基礎:函式(二)
一. 知識倉庫 預設引數的陷阱:如果預設引數的值是一個可變資料型別,那麼每次呼叫的時候不傳值,就公用這個資料型別的資源 函式的名稱空間 1、內建名稱空間: - python直譯器一啟動就將可以使用的名字儲存在內建名稱空間中,內建的名字(如print、input
python裝飾器用法(一):計算一個函式執行所需要的時間
import time from functools import wraps def time_this_function(func): #作為裝飾器使用,返回函式執行需要花費的時間
Python:collection模組(內建了一些群集相關的方法和函式)
#!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: [email protected] @software: PyCharm @file: coll
xlwings:使用者自定義函式(UDF),VBA函式,Python函式
VBA定義函式計算 x + y如果用巨集,要把(把返回值寫到哪個單元格里的)程式碼寫到巨集裡面。VBA函式就不用Function MyAddTwoNumber(x As Double, y As Double) Dim z z = x + y