Нужна помощь в задаче panda dataframe (juypternotebook) ПОМОЩЬ НОВАЯ проблема «Только самые торгуемые акции фирмы» - PullRequest
0 голосов
/ 26 мая 2020

Привет, ребята, я начал использовать jupyter notebook несколько дней go.

Мне нужна помощь, у меня есть датафрейм от panda. что-то вроде этого

Date    Stock   Company   Volume

01/02    APPL3   Apple     1.000.000

01/02    YUSS    Yusduqs     200.000

01/02    APPL4    Apple      200.000

01/02    DISN    Disney      1.500.000

02/02    APPL3    Apple       100.000

02/02    YUSS    Yusduqs     1.250.000

02/02    DISN     Disney     2.000.000

02/02    APPL4    Apple     1.250.000

 ...            ...           ....

Мне нужно выбрать акции, которые торговались более 80% дней с объемом более 500 000,00 долларов в день.

И мне нужно выберите ** только одну акцию на фирму, критерий - у которой больше объема за все дни вместе взятые. Как и для «Apple» в [Компания], у меня есть два разных [Stock] Appl3 и Appl4, в этом конкретном случае c мне нужен только APPL4.

(Поскольку Объем дней объединен в Appl4> Объем дни, объединенные в приложении3)

Я начал так:

unique_dates=len(df['Date'].value_counts()) share_freq=df[df['Volume']>=500000]]['Stock'].value_counts() stocks=share_freq/unique_dates for stock,value in stocks.items(): if(value>0.8): print(stock)

Итак, после этого я могу увидеть, какой из них имеет> 0,8, но мне все равно нужно выбрать только одна акция на фирму. Я не знаю, как соблюдать весь критерий ios и в конце отфильтровать весь фрейм данных по критерию ios и сохранить в .csv

1 Ответ

1 голос
/ 26 мая 2020

Вы можете узнать частоту акций, которые торговались более 500000 в течение 80% дней,

unique_dates=len(df['Date'].value_counts())
share_freq=df[df['Volume']>=500000]]['Stock'].value_counts()
stocks=share_freq/unique_dates
for stock,value in stocks.items():
    if(value>0.8):
        print(stock)

Ответ на расширенный вопрос ..

stock_dict=dict()
for stock,value in stocks.items():
    if(value>0.8):
        stock_df=df[df['Stock']==stock]
        volume=stock_df['Volume'].sum()
        key=stock_df['Company']
        key=key.iloc[0]
        try:
            if(volume> stock_dict[key][1]):
                stock_dict[key]=(stock,volume)
        except:
            stock_dict[key]=(stock,volume)
print(stock_dict)

Здесь после того, как мы находим акции, которые встречаются в 80% дат, и объем превышает 500000. Я сделал словарь, в котором хранится максимальный объем акций компании. печать stock_dict дает набор кортежей с максимальным объемом в компании и его объемом.

...