数据简单处理和分析

'''
简单数据分析流程:
1、明确目的
2、理解数据
3、数据清洗
4、数据分析和可视化
5、结论和建议

分析方法:
1、常用的统计方法:常见统计量、构建相关指标
2、图表法

'''
#导库
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import os
import numpy

# 1、查看和理解数据
data = pd.read_csv("data.csv", dtype = {'trade_date' : 'object'},encoding='utf-8')

# data = pd.read_csv('data.csv',encoding='utf-8')
# print(data)
print(data.info())

# 2、数据清洗
# (1)计算每一列的缺失率(利用匿名函数)
data.apply(lambda x:sum(x.isnull())/len(x),axis=0)
# (2)拷贝数据并去空值
df = data.dropna(how='any').copy() #去重和拷贝格式

#前提时date字段为object类型才可以,int类型会出错
df.trade_date = pd.to_datetime(df.trade_date,errors='coerce')  #转换格式并做容错处理 errors='coerce'
# pd.to_datetime(df['trade_date'],format='%d/%m/%Y %H:%M:%S', errors='coerce')
# df.trade_date = df.trade_date.dt.date  #1970-01-01格式(只取年月日)

# 去重
df[df['pe'] > 0]['eps'].drop_duplicates()

# 计算人均股本
df.drop(df[df['holder_num']==0].index,inplace=True) #删除除数为0的行,改变原数据
df['per_shrare']=df.apply(lambda x:x[7]/x[16],axis=1)

# 3、数据分析和可视化
# (1)按照每股未分配利润分组求和,取利润环比增长
corre = df.groupby('per_undp').sum()['profit_yoy'].sort_values(ascending=False).head(10)
# (2)绘图
import plotly as py
import plotly.graph_objs as go
py.offline.init_notebook_mode()
pyplot = py.offline.iplot
trace_basic=[go.Bar(x=corre.index.tolist(),y=corre.values.tolist(),marker=dict(color='orange'),opacity=0.50)]  #数据 opacity=.50透明度
layout = go.Layout(title='每股未分配利润和利润环比增长的关系',xaxis=dict(title='每股未分配利润')) #布局
figure = go.Figure(data=trace_basic,layout=layout) #把数据和布局弄到一起
pyplot(figure)


在这里插入图片描述

# (3)按照每股未分配利润分组求和,取股东人数
corre = df.groupby('per_undp').sum()['holder_num'].sort_values(ascending=False).head(10)
trace_basic=[go.Bar(x=corre.index.tolist(),y=corre.values.tolist(),marker=dict(color='red'),opacity=0.50)]  #数据 opacity=.50透明度
layout = go.Layout(title='每股未分配利润和持股人数的关系--前十',xaxis=dict(title='每股未分配利润')) #布局
figure = go.Figure(data=trace_basic,layout=layout) #把数据和布局弄到一起
pyplot(figure)

在这里插入图片描述

# (4)处理和形成月份列
df['month']=pd.to_datetime(df.trade_date,errors='coerce').dt.month
# (5)按月份数分组对持股人数进行统计
sns.set(style='darkgrid',context='notebook',font_scale=1.2)

df.groupby('month').sum()['holder_num'].sort_values(ascending=False).head(10).plot(kind='bar')

在这里插入图片描述

# 分类聚合统计---按照不同的月份来统计pe,holder_num和per_undo
holder = df['holder_num'].groupby('month').agg({'pe':'nunique','holder_num':np.sum,'per_undo':np.sum})
holder.discribe() #描述性统计

最后结论和建议........
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XB_tonticc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值