目录
前言
work.py
文件包含了四个问题的解决方案,分别处理了不同类型的文件和数据操作。这些操作涉及到读取 CSV/Excel 文件、筛选数据、合并数据以及导出数据到新的 Excel 文件。
一、问题一
这部分代码读取了一个名为 News_Security.csv
的 CSV 文件,并从中筛选出 SecurityType
列等于 'A股'
的行。然后选择 DeclareDate
, Title
, NewsID
, ShortName
四列,并将这些数据保存到一个新的 Excel 文件中,文件名是 A股新闻查询结果.xlsx
。
二、问题二
这部分代码读取了一个名为 News_NewsInfo1.csv
的 CSV 文件,并计算其中 NewsSource
列包含字符串 "东方财富网" 的行数。然后将这个计数值保存到一个 DataFrame 中,并将此 DataFrame 导出到一个名为 东方财富网.xlsx
的 Excel 文件中。
三、问题三
这部分代码读取了两个 CSV 文件,分别是 TRD.csv
和 AF_Actual.csv
,并将这两个文件合并成一个新 DataFrame,然后将结果保存到一个名为 日度收益与分析师预测的每股收益与市盈率.csv
的 CSV 文件中。
四、问题四
这部分代码读取了一个名为 STK_LISTEDCOINFOANL.xlsx
的文件内容,并统计其中的行数(即新闻条目数)。为了确保准确计数,代码会检查文件的最后一行是否以换行符结束,如果不结束则加1。然后将这个计数值保存到一个 DataFrame 中,并将此 DataFrame 导出到一个名为 新闻总数.xlsx
的 Excel 文件中。
总结一下整个脚本的功能
从 News_Security.csv 中提取 A 股新闻数据,并保存到 A股新闻查询结果.xlsx。 计算 News_NewsInfo1.csv 中来自东方财富网的新闻数量,并保存到 东方财富网.xlsx。 合并 TRD.csv 和 AF_Actual.csv,并将结果保存到 日度收益与分析师预测的每股收益与市盈率.csv。 计算 STK_LISTEDCOINFOANL.xlsx 中的新闻总数,并保存到 新闻总数.xlsx。
代码解释:
准备:导入pandas
1.解决问题一
# 问题一
df1 = pd.read_csv('News_Security.csv') # 如果数据是CSV格式
a_stock_news = df1[df1['SecurityType'] == 'A股']
selected_columns = a_stock_news[['DeclareDate', 'Title', 'NewsID','ShortName']]
excel_filename = 'A股新闻查询结果.xlsx'
selected_columns.to_excel(excel_filename, index=False, engine='openpyxl')
print(f'查询结果已保存到 {excel_filename}')
这部分代码读取了一个名为 News_Security.csv
的 CSV 文件,并从中筛选出 SecurityType
列等于 'A股'
的行。然后选择 DeclareDate
, Title
, NewsID
, ShortName
四列,并将这些数据保存到一个新的 Excel 文件中,文件名是 A股新闻查询结果.xlsx
。
2.解决问题二
# 问题二
df2 = pd.read_csv('News_NewsInfo1.csv',on_bad_lines='skip')
eastmoney_count = df2[df2['NewsSource'].str.contains("东方财富网", na=False)].shape[0]
results_df = pd.DataFrame({
'Result': [eastmoney_count] # 将结果保存在DataFrame中
})
excel_filename = '东方财富网.xlsx'
results_df.to_excel(excel_filename, index=False, engine='openpyxl')
print(eastmoney_count)
这部分代码读取了一个名为 News_NewsInfo1.csv
的 CSV 文件,并计算其中 NewsSource
列包含字符串 "东方财富网" 的行数。然后将这个计数值保存到一个 DataFrame 中,并将此 DataFrame 导出到一个名为 东方财富网.xlsx
的 Excel 文件中。
3.解决问题三
# 问题三
df3 = pd.read_csv('TRD.csv')
df4= pd.read_csv('AF_Actual.csv')
combined_df = pd.concat([df3, df4], ignore_index=True)
combined_df.to_csv('日度收益与分析师预测的每股收益与市盈率.csv', index=False)
这部分代码读取了两个 CSV 文件,分别是 TRD.csv
和 AF_Actual.csv
,并将这两个文件合并成一个新 DataFrame,然后将结果保存到一个名为 日度收益与分析师预测的每股收益与市盈率.csv
的 CSV 文件中。
4.解决问题四
# 问题四
with open('STK_LISTEDCOINFOANL.xlsx', 'r', encoding='utf-8', errors='ignore') as file:
news_data = file.read()
news_count = news_data.count('\n') + 1 # 加1是因为文件最后一行可能没有换行符
results_df = pd.DataFrame({
'DailyNewsCount': [news_count] # 将结果保存在DataFrame中
})
# 将结果保存到Excel文件中
excel_filename = '新闻总数.xlsx'
results_df.to_excel(excel_filename, index=False, engine='openpyxl')
# 打印输出结果
print(f"The total number of daily news items is: {news_count}")
print(f'Results have been saved to {excel_filename}')
这部分代码读取了一个名为 STK_LISTEDCOINFOANL.xlsx
的文件内容,并统计其中的行数(即新闻条目数)。为了确保准确计数,代码会检查文件的最后一行是否以换行符结束,如果不结束则加1。然后将这个计数值保存到一个 DataFrame 中,并将此 DataFrame 导出到一个名为 新闻总数.xlsx
的 Excel 文件中。
总结
work.py
文件包含了四个问题的解决方案,分别处理了不同类型的文件和数据操作。这些操作涉及到读取 CSV/Excel 文件、筛选数据、合并数据以及导出数据到新的 Excel 文件