使用Python进行数据分析(CH01)

第一步 导入数据

data = pd.read_csv('path', names = [col1, col2, col3])

第二步 查看数据

2.1 查看数据的前5行

data.head()

2.2 查看数据的所有列的名字

data.columns

2.3 删除掉不需要的列

data.drop(columns = [col1, col2], axis = 1, inplace = True)

2.4 查看所有列的数据类型,查看数据类型,非常重要,因为有的时间类型数据,会被python认为是object

data.dtypes

第三步 处理数据

3.1 将object转化为time数据类型

data['报名时间'] = pd.to_datetime(data['报名时间'], format = '%Y-%m-%d')

第四步 分析数据

4.1 可以查看,某一个列下的数据分布
比如:

data['性别'].value_counts()

但是,这样的代码,只会返回给我们一系列数据,如果我们希望数据的呈现形式,更加形象,我们可以这样:

data['性别'].value_counts().plot(kind = 'bar', color = 'yellow')

4.2 如果,我想要查看,根据性别来划分,不同性别的参赛选手的参赛身份我可以

data.groupby(['性别','参赛身份']).姓名.count()

4.3 如果,我想要查看,不同时间段,选手参赛情况,那么这是一个时间序列问题,x轴应该是时间,y轴应该是这个时间对应的参赛人数。
在x轴,可以按照划分,可以按照划分,也可以按照划分。因为我的数据,对应的时间段较短,因此,用 作为x轴单位。
我目前想出来的绘制这样一个图的方式是:

  1. 单独抽出一个按照时间聚合的DataFrame
time = data.groupby('报名时间').性别.count()
  1. 接着,我们需要将这个单独抽出来的数据,转化为DataFrame
time = pd.DataFrame(time)
  1. 接着原本的报名时间就成为了index。这个时候,我们需要将报名时间放入列中
time.reset_index(level ='报名时间', inplace = True)

这个时候,报名时间和参赛人数,就都在这个DataFrame的列中了
4. 最后,我们就可以做出我们想要的图啦

import matplotlib.pyplot as plt
%matplotlib inline
fig = plt.figure(figsize = (20,5)
ax = fig.add_subplot(1,1,1)
ax.plot(time['报名时间'], time['性别']
ax.tick_params(axis = 'x', rotation = 45)

最后的效果是:
在这里插入图片描述
最后一行代码的作用是,将x轴的label从横着排列到旋转45度,这样就可以更加清楚地显示给读者啦。

综上,可以得出结论,随着时间的变化,参加比赛的报名人数明显减少。

猜你喜欢

转载自blog.csdn.net/weixin_41160054/article/details/88039900