1.现有一个职业人群体检数据testdata.xls文件,请完成以下数据分析任务。 (1)用read_excel()方法读取testdata.xls文件到变量df中。 (2)用df.dtypes查看每列的数据类型。 (3)用df.info()查看表结构。 (4)用isnull().sum()统计各字段空缺值。 (5)用dropna()方法删除全为空的列。 (6)用dropna()方法删除“身份证号”为空的行,并用isnull().sum()再次统计空值。 (7)将“开始从事某工作年份:2009年”中的“年”去掉,并用rename()将列名改为“参加工作时间”。将“体检年份:2009年”中的“年”去掉。 (8)用dropna()方法删除“参加工作时间”、“体检年份”为空的行. (9)用astype()方法将“参加工作时间”、“体检年份”数据类型改为int64. (10)增加一列“工龄”,工龄=体检年份-参加工作时间;新增一列“年龄” (11)用groupby()统计不同性别的白细胞计数均值,并用plot()方法绘制柱状图 (12)统计不同年龄段的白细胞计数,并绘制柱状图。年龄划分:小于等于30岁,31~40岁,41~50岁,大于50岁
时间: 2023-12-14 15:39:50 浏览: 108
如何用excel进行数据分析.docx
以下是对应的Python代码:
```python
# (1)读取testdata.xls文件到变量df中
import pandas as pd
df = pd.read_excel('testdata.xls')
# (2)查看每列的数据类型
print(df.dtypes)
# (3)查看表结构
print(df.info())
# (4)统计各字段空缺值
print(df.isnull().sum())
# (5)删除全为空的列
df.dropna(axis=1, how='all', inplace=True)
# (6)删除“身份证号”为空的行,并再次统计空值
df.dropna(subset=['身份证号'], inplace=True)
print(df.isnull().sum())
# (7)将“开始从事某工作年份:2009年”中的“年”去掉,并将列名改为“参加工作时间”;
# 将“体检年份:2009年”中的“年”去掉
df.rename(columns={'开始从事某工作年份:2009年': '参加工作时间', '体检年份:2009年': '体检年份'}, inplace=True)
df['参加工作时间'] = df['参加工作时间'].str.replace('年', '')
df['体检年份'] = df['体检年份'].str.replace('年', '')
# (8)删除“参加工作时间”、“体检年份”为空的行
df.dropna(subset=['参加工作时间', '体检年份'], inplace=True)
# (9)将“参加工作时间”、“体检年份”数据类型改为int64
df['参加工作时间'] = df['参加工作时间'].astype('int64')
df['体检年份'] = df['体检年份'].astype('int64')
# (10)增加一列“工龄”,工龄=体检年份-参加工作时间;新增一列“年龄”
df['工龄'] = df['体检年份'] - df['参加工作时间']
df['年龄'] = df['出生年'].apply(lambda x: 2021 - x)
# (11)统计不同性别的白细胞计数均值,并用plot()方法绘制柱状图
df.groupby('性别')['白细胞计数'].mean().plot(kind='bar')
# (12)统计不同年龄段的白细胞计数,并绘制柱状图。年龄划分:小于等于30岁,31~40岁,41~50岁,大于50岁
bins = [0, 30, 40, 50, 100]
labels = ['<=30', '31~40', '41~50', '>50']
df['年龄段'] = pd.cut(df['年龄'], bins=bins, labels=labels)
df.groupby('年龄段')['白细胞计数'].mean().plot(kind='bar')
```
阅读全文