Python pandas㈡练习
一、合并音乐爱国歌曲数据
import pandas as pd
df1 = pd.read_csv(r'C:\Users\10907\Desktop\records.csv',engine='python')
df2 = pd.read_csv(r'C:\Users\10907\Desktop\songs.csv',engine='python')
df3 = pd.read_csv(r'C:\Users\10907\Desktop\users.csv',engine='python')
#(1)
cont = pd.merge(df1,df2,how='left',on='歌曲名')
cont
result = pd.merge(cont,df3,how='left')
result
#(2)
ab = result.sort_values(by='评论时间',axis=0,ascending=False,ignore_index=True)
ab.fillna('', inplace=True)
ab.head(5)
for i in range(1,6):
x = list(ab.head(i).loc[i-1,['歌曲名']])[0]
y = list(ab.head(i).loc[i-1,['歌手']])[0]
if(y!=''):
a=y[2:5]
print("前五个用户爱听的歌曲名为{},演唱者为{}".format(x,a))
else:
y='暂无'
print("前五个用户爱听的歌曲名为{},演唱者{}".format(x,y))
二、案例实现
已知某公司新产品在全国的用户使用数量(data/nums.csv),和2020年人口普查中这些省的人口总量(‘data/population.csv’),计算人口占比(用户使用数量/人口总量),预测在哪个省开展向新用户推广该产品的活动的价值最高。
import pandas as pd
df1 = pd.read_csv('data/nums.csv',engine='python')
df2 = pd.read_csv('data/population.csv',engine='python')
#如果utf-8报错 则使用 df1 = pd.read_csv('data/nums.csv',engine='python',encoding='gb2312')
cont = pd.merge(df1,df2,how='left')
cont.eval("""人口占比=用户数量/人口数""", inplace=True)
#或使用 cont['人口占比']=cont['用户数量']/cont['人口数']
cont.sort_values(by='人口占比',axis=0,ascending=False,inplace=True,ignore_index=True)
province = list(cont.head(1).loc[0,['地区']])[0]
users =list(cont.head(1).loc[0,['用户数量']])[0]
people =list(cont.head(1).loc[0,['人口数']])[0]
proportion=list(cont.head(1).loc[0,['人口占比']])[0]
print("预测{0}省开展向新用户推广该产品的活动的价值最高,其中用户数量为{1},人口占比为{2},人口占比为{3}".format(province,users,people,proportion))