파이썬 계산에 관한 질문이 있습니다. 다음과 같은 CSV 파일이 있습니다 :
GOOG,100,900.10
MSFT,50,68.99
AAPL,100,152.92
IBM,5,151.95
GOOG,150,901.25
AAPL,50,152.25
TEAM,100,36.91
NVDA,75,117.88
INTC,200,36.24
IBM,10,151.91
AAPL,700,152.15
GOOG,100,900.99
GOOG,50,900.12
데이터 세트가 명확하게 정의되어 있지 않으므로 설명해야합니다. 첫 번째 열은 계측기이고 두 번째 열은 수량이며 마지막 열은 가격입니다. 이 CSV 파일을 읽은 다음 데이터를 기준으로 분할 된 열을 작성해야합니다. 그런 다음 수량에 가격을 곱하여 가치를 계산해야합니다. 그 후, 나는 거래의 수를 세고 다음과 같이 가장 일반적인 5 가지 도구를 인쇄해야합니다 :
Top 5 trades by number of trades:
GOOG: 4 trade(s) total of 400 shares, $ 360,302.50
AAPL: 3 trade(s) total of 850 shares, $ 129,409.50
IBM: 2 trade(s) total of 15 shares, $ 2,278.85
MSFT: 1 trade(s) total of 50 shares, $ 3,449.50
TEAM: 1 trade(s) total of 100 shares, $ 3,691.00
완료되지 않아 다음 코드가 작동하지 않습니다 :
from collections import defaultdict, Counter
def analyse(filename):
# I should write my counter here
with open(filename) as src:
for line in src:
instrument, quantity, price = line.split(',')
quantity = int(quantity)
# I should compute value here
# I need summarize my results here
# This print can help me
print(f'{inst:>5}: {count:2} trade(s) total of {quantity:4} shares, ${value:11,.2f}')
if __name __ == '__main__':
analyse('filename')
파이썬을 처음 접했기 때문에이 문제를 혼자서 해결할 수는 없습니다. 도움을 주시면 감사하겠습니다.
- 답변 # 1
- 답변 # 2
팬더를 확인하십시오. 필요한 모든 것을 할 수 있습니다.
시작 :
df = pandas.read_csv(<filename>, usecols = ['ticker', 'price', quantity']))
usecols
사용 CSV에 열 이름이있는 경우 그렇지 않으면 나중에 설정하십시오.df.columns = ['ticker', 'price', quantity']
.그런 다음과 같은 칼럼에서 작업 할 수 있습니다 :
df['result'] = df['price'] * df['quantity']
- 답변 # 3
먼저
csv
를 읽으십시오pandas.read_csv
를 사용한 파일 . 그런 다음amount
를 계산하십시오. 열과pd.groupby
당신의 가치import pandas as pd a = pd.read_csv("path/to/file.csv") # optional args: names=['stock','volum', 'price'], header=None a["amount"] = a["volum"] * a["price"] b = a.groupby("stock").agg({"volum":sum, "amount":sum, "stock": "count"})
그럼
pd.sort_values
~처럼b = b.sort_values("amount", ascending=False)
마지막으로 다음과 같이 텍스트를 연결할 수 있습니다.
b["text"] = b.index + ": " + b["stock"].astype(str) + " trade(s) total of " + b["volum"].astype(str) + " shares, $ " + b["amount"].astype(str)
이제
print(b["text"])
라면 원하는 결과를 얻습니다GOOG: 4 trade(s) total of 400 shares, $ 360,302.50 AAPL: 3 trade(s) total of 850 shares, $ 129,409.50 IBM: 2 trade(s) total of 15 shares, $ 2,278.85 MSFT: 1 trade(s) total of 50 shares, $ 3,449.50 TEAM: 1 trade(s) total of 100 shares, $ 3,691.00
- python : 한 DF의 목록 열과 다른 DF의 목록 열 확인하기
- python : 변환 공식을 사용하여 범주형 값을 매핑해야 하는 "숫자" 데이터 세트에 기능 추가
- python : 값/중첩 np.where 알 수 없는 깊이를 기반으로 df의 여러 열을 단일 열로 통합
- python : 팬더는 조건에 따라 새 열을 계산합니다.
- python : numpy 벡터화(변수 누적)
- python : 3059x704760 픽셀의 이미지 크기가 너무 큽니다. 각 방향으로 2^16보다 작아야 합니다.
- python : ID가 없는 축소 작업 최대값에 대한 0 크기 배열
- python : Pandas에서 조건을 만족하는 셀들을 하나의 셀로 결합하면서 컬럼명과 충족된 조건별로 그룹화하는 방법
- python : 다른 목록에서 요소를 찾는 df 열(각 행이 목록인 경우)을 어떻게 반복합니까?
- python : pandas resample에서 first()는 무엇을 합니까?
header
매개 변수와 함께pandas.read_csv ()를 사용해야합니다. 그리고names
csv에 열 머리글이 없음을 지정하고 자신의 열 이름을 지정하십시오. 그런 다음 perfom 곱셈을 수행하고 새 열을 만듭니다. 5 대 거래를하려면groupby
를 누른 다음 상위 5 개를 선택하기 전에 내림차순으로 정렬하십시오.출력 :