本代码实现了,在往期开奖数据中,统计每个红球、篮球的开奖频率,仅供参考。
彩票.xlsx
import pandas as pd
def calculate_frequencies(dataframe, red_ball_columns, blue_ball_column):
# 初始化红球和蓝球的频率字典
red_ball_frequencies = {i: 0 for i in range(1, 34)}
blue_ball_frequencies = {i: 0 for i in range(1, 17)}
# 遍历红球列,统计每个号码的出现次数
for column in red_ball_columns:
for number in dataframe[column].unique():
if 1 <= number <= 33:
red_ball_frequencies[number] += (dataframe[column] == number).sum()
# 统计蓝球的出现次数
for number in dataframe[blue_ball_column].unique():
if 1 <= number <= 16:
blue_ball_frequencies[number] += (dataframe[blue_ball_column] == number).sum()
# 计算频率
total_draws = len(dataframe)
red_ball_freq_percent = {ball: freq / total_draws * 100 for ball, freq in red_ball_frequencies.items()}
blue_ball_freq_percent = {ball: freq / total_draws * 100 for ball, freq in blue_ball_frequencies.items()}
return red_ball_freq_percent, blue_ball_freq_percent
def print_top_frequencies(frequencies, ball_type, top_n):
# 根据频率排序并打印前N个球的号码和频率
sorted_frequencies = sorted(frequencies.items(), key=lambda x: x[1], reverse=True)
print(f"Top {top_n} {ball_type} Frequencies:")
for ball_number, frequency in sorted_frequencies[:top_n]:
print(f"{ball_type} {ball_number}: {frequency:.2f}%")
def main():
file_path = "彩票.xlsx"
try:
# 读取Excel数据
dataframe = pd.read_excel(file_path)
# 定义红球和蓝球的列名
red_ball_columns = [f'红{i}' for i in range(1, 7)]
blue_ball_column = '篮球'
# 计算红球和蓝球频率
red_ball_frequencies, blue_ball_frequencies = calculate_frequencies(dataframe, red_ball_columns, blue_ball_column)
# 打印红球频率Top 10
print_top_frequencies(red_ball_frequencies, "红球", 33)
# 打印蓝球频率Top 10
print_top_frequencies(blue_ball_frequencies, "蓝球", 16)
except Exception as e:
print(f"发生错误:{e}")
if __name__ == "__main__":
main()
统计结果