前言:
本期将利用Python分析沪深上市公司数据,看看公司的基本财报数据、地区分布情况、公司规模等等,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。
1.数据读取:
2.数据预处理:
2.1 缺失值处理
data.info() #查看是否有缺失值
2.2 重复值处理
duplicates_count = data.duplicated().sum() # 计算重复值数量
3.数据分析:
3.1 公司地区分布情况
3.2对净利润进行排序并添加排名
# 定义转换函数
def convert_to_int(value):
if isinstance(value, str):
if '亿' in value:
return float(value.replace('亿', '')) * 1e8
elif '万' in value:
return float(value.replace('万', '')) * 1e4
return value
# 将转换函数应用于‘营业收入’和‘净利润’列
data['营业收入'] = data['营业收入'].apply(convert_to_int)
data['净利润'] = data['净利润'].apply(convert_to_int)
# 将转换后的列转换为数字类型,如果无法转换,则设置为NaN
data['营业收入'] = pd.to_numeric(data['营业收入'], errors='coerce')
data['净利润'] = pd.to_numeric(data['净利润'], errors='coerce')
# Drop rows with NaN values in '营业收入' and '净利润'
data.dropna(subset=['营业收入', '净利润'], inplace=True)
# (营业收入 - 净利润)
data['利润总额'] = data['营业收入'] - data['净利润']
#%%
# Sort by '营业收入' and add ranking
revenue_ranking = data.sort_values(by='营业收入', ascending=False).reset_index(drop=True)
revenue_ranking['排名'] = range(1, len(revenue_ranking) + 1)
# Return the revenue ranking as a DataFrame
revenue_ranking[['排名', '股票代码', '公司名称', '营业收入']]
profit_ranking = data.sort_values(by='净利润', ascending=False).reset_index(drop=True)
profit_ranking['排名'] = range(1, len(profit_ranking) + 1)
# Return the revenue ranking as a DataFrame
revenue_ranking[['排名', '股票代码', '公司名称', '净利润']]
3.3行业排名-直方图
# 只选取前十个行业分类
top_industry_categories = data['行业分类'].value_counts().head(10)
# 绘制行业分类的直方图
plt.figure(figsize=(10, 8)) # 设置图形的大小
top_industry_categories.plot(kind='bar') # 绘制直方图
plt.title('前十个行业分类直方图') # 设置图形标题
plt.xlabel('行业分类') # 设置x轴标签
plt.ylabel('公司数量') # 设置y轴标签
plt.xticks(rotation=45) # 旋转x轴标签以便更好地显示
plt.tight_layout() # 自动调整子图参数, 使之填充整个图像区域
plt.show() # 显示图形
3.4公司规模-词云图(主要依据:员工数量)
# 提取公司名称和员工人数数据
name = data['公司名称']
value = data['员工人数']
# 将公司名称和员工人数数据打包为元组列表,便于后续处理
data1 = [z for z in zip(name, value)]
# 初始化WordCloud对象,用于绘制词云图
chart = WordCloud()
# 添加数据到词云图,设置词云中单词(即公司名称)的大小范围
# word_size_range 参数设置单词大小的范围
chart.add('员工人数', data_pair=data1, word_size_range=[6, 66])
# 设置全局选项,包括标题和提示信息
chart.set_global_opts(
# 设置标题及其样式
title_opts=opts.TitleOpts(
title='公司规模分析',
title_textstyle_opts=opts.TextStyleOpts(font_size=30)),
# 设置提示信息,当鼠标移动到词云上的单词时显示相关信息
tooltip_opts=opts.TooltipOpts(is_show=True)
)