利用Python和Haskell进行数据分析的案例
发布时间:2023-12-09 09:21:35
1. 电影评分分析:
假设我们有一个电影评分数据集,其中包含每部电影的评分和评论数量。我们可以使用Python和Haskell进行数据分析,将评分和评论数量进行分析和可视化。首先,我们可以使用Python的pandas库加载数据集,并计算每部电影的平均评分和评论数量。
import pandas as pd
# 加载数据集
data = pd.read_csv('movies.csv')
# 计算每部电影的平均评分和评论数量
data['average_rating'] = data['rating'].mean()
data['num_reviews'] = data['reviews'].count()
# 查看数据集的前几行
print(data.head())
接下来,我们可以使用Haskell的DataFrames库加载数据集,并计算每部电影的平均评分和评论数量。
import Data.Csv
import Data.Vector (fromList)
import Data.ByteString.Lazy (readFile)
-- 定义电影数据的数据类型
data Movie = Movie { title :: String, rating :: Double, reviews :: Int }
-- 从CSV文件加载数据集
loadData :: FilePath -> IO (Either String (Vector Movie))
loadData path = do
csvData <- readFile path
return $ decodeByName csvData >>= \(h, v) -> return $ fromList $ map (\r -> Movie (head r) (read (r!!1) :: Double) (read (r!!2) :: Int)) $ toList v
-- 计算每部电影的平均评分和评论数量
analyzeData :: Vector Movie -> (Double, Int)
analyzeData movies = (meanRating, totalReviews)
where
totalReviews = sum $ map reviews $ toList movies
meanRating = sum (map rating $ toList movies) / fromIntegral (length movies)
2. 股票价格预测:
假设我们有一个包含历史股票价格的数据集,并且我们想要预测未来某个时间点的股票价格。我们可以使用Python的pandas库和Haskell的DataFrames库进行数据分析和模型训练。首先,我们可以使用Python的pandas库加载数据集,并使用线性回归模型训练预测模型。
import pandas as pd
from sklearn.linear_model import LinearRegression
# 加载数据集
data = pd.read_csv('stock_prices.csv')
# 训练预测模型
model = LinearRegression()
model.fit(data[['time']], data['price'])
# 预测未来某个时间点的股票价格
future_time = 100
future_price = model.predict([[future_time]])
print(f'Future price at time {future_time}: {future_price}')
接下来,我们可以使用Haskell的DataFrames库加载数据集,并使用线性回归模型训练预测模型。
import Data.Csv
import Data.Vector (fromList)
import Data.ByteString.Lazy (readFile)
import Numeric.LinearRegression
-- 定义股票价格数据的数据类型
data StockPrice = StockPrice { time :: Double, price :: Double }
-- 从CSV文件加载数据集
loadData :: FilePath -> IO (Either String (Vector StockPrice))
loadData path = do
csvData <- readFile path
return $ decodeByName csvData >>= \(h, v) -> return $ fromList $ map (\r -> StockPrice (read (r!!0) :: Double) (read (r!!1) :: Double)) $ toList v
-- 使用线性回归模型训练预测模型
trainModel :: Vector StockPrice -> (Double, Double)
trainModel data = (intercept, slope)
where
(slope, intercept) = linearRegression $ map (\r -> ([time r], [price r])) $ toList data
-- 预测未来某个时间点的股票价格
predictPrice :: Double -> (Double, Double) -> Double
predictPrice futureTime (intercept, slope) = intercept + slope * futureTime
以上是两个使用Python和Haskell进行数据分析的案例,并提供了相应的代码示例。这些案例只是简单示例,实际的数据分析工作可能涉及更复杂的数据处理和模型训练。使用Python和Haskell进行数据分析需要掌握相应的数据分析库和语言特性,并灵活应用它们来解决实际问题。
