1. 程式人生 > >Python:聚合函式(groupby)

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模組3Counter模組以及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 資料分析筆記 03NumPy 矩陣運算和常用函式重點

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): #作為裝飾器使用,返回函式執行需要花費的時間

Pythoncollection模組內建了一些群集相關的方法和函式

#!/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