用lagou.csv中的数据完成下面的操作:
df1 = lagou_df[lagou_df.positionName.str.contains('数据分析')] df1
# 1. 找出各大城市数据分析岗位的需求量并绘制柱状图 ser = df1.city.value_counts() ser.plot(kind='bar', width=0.8, color=np.random.rand(13, 3)) # 给柱子标数字并居中 for i in range(ser.size): plt.text(i, ser[i]+5, str(ser[i]), ha='center') # 改纵轴刻度 plt.yticks(np.arange(0, 501, 50)) # 改横轴字体角度 plt.xticks(rotation=30) # 给x,y轴标识 plt.xlabel('') plt.ylabel('招聘需求数量') # 给图加网格线 plt.grid(axis='y', alpha=0.25) plt.show()
# 2. 找出不同领域对数据分析的需求量的占比并绘制饼图 # 先处理industryField数据 inds = df1.industryField.str.split(r'[,, 丨, \s]', expand=True)[0] # expand参数是将分列后的结果转成DataFrame df1['industryField'] = inds
# 画出甜甜圈 df1.industryField.value_counts().sort_values().nlargest(10).plot(kind='pie', autopct='%.1f%%', pctdistance=0.8, wedgeprops={'width': 0.4, 'edgecolor': 'white'}) plt.ylabel('') plt.show()
# 3. 分析各个城市的薪资水平并绘制柱状图和折线图 sal_df = np.round(df1.groupby('city').salary.mean(), 1) sal_df.plot(kind='bar') sal_df.plot(kind='line', color='red', marker='o') plt.yticks(np.arange(5, 26, 5)) plt.show()
df1 = pd.DataFrame({ "类别": ["手机", "手机", "手机", "手机", "手机", "电脑", "电脑", "电脑", "电脑"], "品牌": ["华为", "华为", "华为", "小米", "小米", "华为", "华为", "小米", "小米"], "等级": ["A类", "B类", "A类", "B类", "C类", "A类", "B类", "C类", "A类"], "A组": [1, 2, 2, 3, 3, 4, 5, 6, 7], "B组": [2, 4, 5, 5, 6, 6, 8, 9, 9] }) df1
# 用上面的数据完成以下任务。 # 任务1:A组手机和电脑各卖出多少台 # 任务2:A组不同品牌的手机和电脑各卖出多少台 # 任务3:不同品牌的手机和电脑,A组和B组各卖出多少台
# 任务1:A组手机和电脑各卖出多少台 df1.groupby('类别').A组.sum()
# 任务2:A组不同品牌的手机和电脑各卖出多少台 df1.groupby(['类别', '品牌']).A组.sum()
# 任务3:不同品牌的手机和电脑,A组和B组各卖出多少台 pd.pivot_table(df1, index='类别', columns='品牌', values=['A组', 'B组'], aggfunc=sum)
读取2018年北京积分落户数据,完成下面的操作。
根据company将落户人员分组,统计每个公司有多少积分落户人员?
根据年龄将落户人员分组,统计每个年龄段有多少人(建议5岁一个年龄段)?
根据落户积分将落户人员分组,统计每个积分段有多少人?
beijing_df = pd.read_csv(r'C:\Users\wby\Desktop\data\csv\2018年北京积分落户数据.csv') beijing_df
beijing_df.info()
# 1. 根据company将落户人员分组,统计每个公司有多少积分落户人员? beijing_df['company'].value_counts()[:10]
# 2. 根据年龄将落户人员分组,统计每个年龄段有多少人(建议5岁一个年龄段)? from datetime import datetime curr_date = datetime(2018, 1, 1) (curr_date - pd.to_datetime(beijing_df.birthday)).dt.days // 365 beijing_df['age'] = (curr_date - pd.to_datetime(beijing_df.birthday)).dt.days // 365 beijing_df
min_age, max_age = beijing_df.age.min(), beijing_df.age.max() bins = np.arange(min_age, max_age + 5, 5) cate = pd.cut(beijing_df.age, bins, right=False) beijing_df.groupby(cate).name.count()
# 3. 根据落户积分将落户人员分组,统计每个积分段有多少人?(和上题同理,分箱操作) min_score, max_score = beijing_df.score.min(), beijing_df.score.max() bins = np.arange(min_score, max_score + 1, 5) cate = pd.cut(beijing_df.score, bins , right=False) beijing_df.groupby(cate).name.count()