21
数据读取
题目:读取本地EXCEL数据
难度:⭐
答案
代码语言:javascript复制df = pd.read_excel('pandas120.xlsx')
本期部分习题与该数据相关
22
数据查看
题目:查看df数据前5行
难度:⭐
期望输出
答案
代码语言:javascript复制df.head()
23
数据计算
题目:将salary列数据转换为最大值与最小值的平均值
难度:⭐⭐⭐⭐
期望输出
答案
代码语言:javascript复制import re
for i in range(len(df)):
str1 = df.ix[i,2]
k = re.findall(r"d .?d*",str1)
salary = ((int(k[0]) int(k[1]))/2)*1000
df.ix[i,2] = salary
24
数据分组
题目:将数据根据学历进行分组并计算平均薪资
难度:⭐⭐⭐
期望输出
代码语言:javascript复制education salary
不限 19600.000000
大专 10000.000000
本科 19361.344538
硕士 20642.857143
答案
代码语言:javascript复制df.groupby('education').mean()
25
时间转换
题目:将createTime列时间转换为月-日
难度:⭐⭐⭐
期望输出
答案
代码语言:javascript复制for i in range(len(df)):
df.ix[i,0] = df.ix[i,0].to_pydatetime().strftime("%m-%d")
26
数据查看
题目:查看索引、数据类型和内存信息
难度:⭐
期望输出
代码语言:javascript复制<class 'pandas.core.frame.DataFrame'>
RangeIndex: 135 entries, 0 to 134
Data columns (total 4 columns):
createTime 135 non-null object
education 135 non-null object
salary 135 non-null int64
categories 135 non-null category
dtypes: category(1), int64(1), object(2)
memory usage: 3.5 KB
答案
代码语言:javascript复制df.info()
27
数据查看
题目:查看数值型列的汇总统计
难度:⭐
答案
代码语言:javascript复制df.describe()
28
数据整理
题目:新增一列根据salary将数据分为三组
难度:⭐⭐⭐⭐
输入
期望输出
答案
代码语言:javascript复制bins = [0,5000, 20000, 50000]
group_names = ['低', '中', '高']
df['categories'] = pd.cut(df['salary'], bins, labels=group_names)
29
数据整理
题目:按照salary列对数据降序排列
难度:⭐⭐
答案
代码语言:javascript复制df.sort_values('salary', ascending=False)
30
数据提取
题目:取出第33行数据
难度:⭐⭐
答案
代码语言:javascript复制df.loc[33]
31
数据计算
题目:计算salary列的中位数
难度:⭐⭐
答案
代码语言:javascript复制np.median(df['salary'])
32
数据可视化
题目:绘制薪资水平频率分布直方图
难度:⭐⭐⭐
期望输出
答案
代码语言:javascript复制df.salary.plot(kind='hist')
33
数据可视化
题目:绘制薪资水平密度曲线
难度:⭐⭐⭐
期望输出
答案
代码语言:javascript复制df.salary.plot(kind='kde',xlim=(0,80000))
34
数据删除
题目:删除最后一列categories
难度:⭐
答案
代码语言:javascript复制del df['categories']
35
数据处理
题目:将df的第一列与第二列合并为新的一列
难度:⭐⭐
答案
代码语言:javascript复制df['test'] = df['education'] df['createTime']
36
数据处理
题目:将education列与salary列合并为新的一列
难度:⭐⭐⭐
备注:salary为int类型,操作与35题有所不同
答案
代码语言:javascript复制df["test1"] = df["salary"].map(str) df['education']
37
数据计算
题目:计算salary最大值与最小值之差
难度:⭐⭐⭐
答案
代码语言:javascript复制df[['salary']].apply(lambda x: x.max() - x.min())
38
数据处理
题目:将第一行与最后一行拼接
难度:⭐⭐
答案
代码语言:javascript复制pd.concat([df[:1], df[-2:-1]])
39
数据处理
题目:将第8行数据添加至末尾
难度:⭐⭐
答案
代码语言:javascript复制df.append(df.iloc[7])
40
数据查看
题目:查看每列的数据类型
难度:⭐
期望结果
代码语言:javascript复制createTime object
education object
salary int64
test object
test1 object
dtype: object
答案
代码语言:javascript复制df.dtypes
41
数据处理
题目:将createTime列设置为索引
难度:⭐⭐
答案
代码语言:javascript复制df.set_index("createTime")
42
数据创建
题目:生成一个和df长度相同的随机数dataframe
难度:⭐⭐
答案
代码语言:javascript复制df1 = pd.DataFrame(pd.Series(np.random.randint(1, 10, 135)))
43
数据处理
题目:将上一题生成的dataframe与df合并
难度:⭐⭐
答案
代码语言:javascript复制df= pd.concat([df,df1],axis=1)
44
数据计算
题目:生成新的一列new为salary列减去之前生成随机数列
难度:⭐⭐
答案
代码语言:javascript复制df["new"] = df["salary"] - df[0]
45
缺失值处理
题目:检查数据中是否含有任何缺失值
难度:⭐⭐⭐
答案
代码语言:javascript复制df.isnull().values.any()
46
数据转换
题目:将salary列类型转换为浮点数
难度:⭐⭐⭐
答案
代码语言:javascript复制df['salary'].astype(np.float64)
47
数据计算
题目:计算salary大于10000的次数
难度:⭐⭐
答案
代码语言:javascript复制len(df[df['salary']>10000])
48
数据统计
题目:查看每种学历出现的次数
难度:⭐⭐⭐
期望输出
代码语言:javascript复制本科 119
硕士 7
不限 5
大专 4
Name: education, dtype: int64
答案
代码语言:javascript复制df.education.value_counts()
49
数据查看
题目:查看education列共有几种学历
难度:⭐⭐
答案
代码语言:javascript复制df['education'].nunique()
50
数据提取
题目:提取salary与new列的和大于60000的最后3行
难度:⭐⭐⭐⭐
期望输出
答案
代码语言:javascript复制df1 = df[['salary','new']]
rowsums = df1.apply(np.sum, axis=1)
res = df.iloc[np.where(rowsums > 60000)[0][-3:], :]
以上就是Pandas进阶修炼120题|第二期的全部内容,数据可在后台回复pandas获取,完整的源码将会在稍晚些时候整理发布,如果对于某些题有其他解法欢迎点击下方小程序留言,我们下一期见~