需求:
使用pandas读取一个CSV文件,文件内容包括股票名称、价格和交易量。完成以下任务:
找出价格最高的股票;
计算总交易量;
绘制价格折线图。
代码实现:
python
import pandas as pd
import matplotlib.pyplot as plt
class StockAnalysis:
def __init__(self, csv_file):
"""
初始化股票数据分析类
:param csv_file: 包含股票数据的CSV文件路径
"""
self.csv_file = csv_file
self.data = None
def load_data(self):
"""
加载CSV文件数据到Pandas DataFrame
"""
try:
self.data = pd.read_csv(self.csv_file)
print("数据加载成功!")
print(self.data.head()) # 打印前5行数据进行检查
except FileNotFoundError:
print("文件未找到,请检查文件路径!")
def analyze_data(self):
"""
分析股票数据:找出价格最高的股票和计算总交易量
"""
if self.data is not None:
# 找出价格最高的股票
max_price_row = self.data.loc[self.data['Price'].idxmax()]
print(f"价格最高的股票是:{max_price_row['Stock']},价格为:{max_price_row['Price']}")
# 计算总交易量
total_volume = self.data['Volume'].sum()
print(f"总交易量为:{total_volume}")
else:
print("数据未加载,无法进行分析!")
def plot_price_line_chart(self):
"""
绘制股票价格折线图
"""
if self.data is not None:
# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(self.data['Stock'], self.data['Price'], marker='o', color='b', label='Price')
plt.title("Stock Prices", fontsize=16)
plt.xlabel("Stock", fontsize=12)
plt.ylabel("Price", fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.legend(fontsize=10)
plt.tight_layout()
plt.show()
else:
print("数据未加载,无法绘制图表!")
if __name__ == "__main__":
# 示例CSV文件路径(需要替换为实际路径)
csv_file_path = "stock_data.csv"
# 创建股票数据分析类的实例
analysis = StockAnalysis(csv_file_path)
# 加载数据
analysis.load_data()
# 数据分析
analysis.analyze_data()
# 绘制股票价格折线图
analysis.plot_price_line_chart()
示例 CSV 文件内容 (stock_data.csv)
以下是一个示例 CSV 文件内容,文件格式应包含以下列:
python
Stock,Price,Volume
Apple,150.5,120000
Google,2800.8,50000
Amazon,3400.9,80000
Microsoft,299.7,70000
Tesla,720.4,60000
代码功能说明
加载数据:
使用 pd.read_csv() 加载 CSV 文件到 Pandas DataFrame 中。
打印文件前 5 行数据以检查文件是否加载成功。
分析数据:
使用 idxmax() 找出价格最高的股票及其价格。
使用 sum() 计算所有股票的总交易量。
绘制折线图:
使用 Matplotlib 绘制股票价格折线图。
横轴为股票名称(Stock),纵轴为价格(Price),并添加标记点。
运行效果:
python
数据加载成功!
Stock Price Volume
0 Apple 150.5 120000
1 Google 2800.8 50000
2 Amazon 3400.9 80000
3 Microsoft 299.7 70000
4 Tesla 720.4 60000
价格最高的股票是:Amazon,价格为:3400.9
总交易量为:380000
折线图
X 轴:股票名称(Apple, Google, Amazon...)。
Y 轴:对应股票价格。
折线带有标记点,展示股票价格的趋势。