datawhale 综合练习

    技术2022-07-11  144

    时序数据掌握不够熟练,只完成了第一题,后序会将二题和三题补全

    import pandas as pd data=pd.read_csv('端午粽子数据.csv') data.info() cols=[] for i in data.columns: cols.append(i.strip()) data.columns=cols <class 'pandas.core.frame.DataFrame'> RangeIndex: 4403 entries, 0 to 4402 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 标题 4403 non-null object 1 价格 4403 non-null object 2 付款人数 4332 non-null object 3 店铺 4403 non-null object 4 发货地址 4400 non-null object dtypes: object(5) memory usage: 172.1+ KB data 标题价格付款人数店铺发货地址0五芳斋粽子礼盒 心悦+18只装咸鸭蛋组合端午节礼品团购嘉兴肉粽子1296人付款五芳斋官方旗舰店浙江 嘉兴1北京稻香村端午粽子手工豆沙粽220g*2袋散装豆沙粽香甜软糯豆沙粽448人付款天猫超市上海2五芳斋粽子礼盒装鲜肉咸蛋黄大肉粽嘉兴豆沙甜粽端午团购散装礼品89.9100万+人付款五芳斋官方旗舰店浙江 嘉兴3稻香私房鲜肉粽蛋黄肉粽嘉兴粽子咸鸭蛋礼盒装端午节送礼特产团购1381936人付款稻香村食品旗舰店北京4嘉兴粽子 蛋黄鲜肉粽新鲜大肉粽早餐散装团购浙江特产蜜枣多口味3.89500+人付款城城喂食猫浙江 嘉兴..................4398红船100克*2只五谷杂粮粽 浙江特产嘉兴粽子 团购粽子嘉兴端午节7.9347人付款红船旗舰店浙江 嘉兴4399隐栗古法烧肉粽/咸蛋黄/豆沙板栗端午粽子三种口味6只家庭礼盒装9380人付款峨眉山隐栗粑粑罗栗四川 乐山4400五芳斋 佛系粽子全素口味礼盒装桂花八宝粽豆沙甜粽端午礼品团购98.25人付款北京美程嘉译北京4401【粉丝专享】端午节特产新鲜蛋黄鲜肉粽豆沙嘉兴粽子800g/箱65.9149人付款chaoge1931安徽 合肥4402粽子端午节送礼盒包装1200g双蛋黄广东东莞大个道滘裹蒸棕鲜肉粽9920人付款hezhiqi广东 东莞

    4400 rows × 5 columns

    一、 第(1)小题

    data=data[~data['发货地址'].isnull()] series=data[data['发货地址'].str.contains(r'[杭州]{2}')]['价格'] series.mean <bound method Series.mean of 15 78 26 64.9 53 88 71 158 89 52.9 ... 4355 79.9 4364 109 4375 11.99 4376 45_ 4397 82 Name: 价格, Length: 180, dtype: object> series[~series.str.contains(r'^-?\d+\.?\d*$')]=45 H:\aanaconda3\lib\site-packages\pandas\core\generic.py:8765: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy self._update_inplace(new_data) series.astype('float64').mean() 80.90088888888877

    一、 第(2)小题

    series1=data[data['标题'].str.contains(r'[嘉兴]{2}')]['发货地址'] series1[~series1.str.contains(r'[嘉兴]{2}')].count() 1032

    一、 第(3)小题

    res=[] for i in data['发货地址']: res.append(i.strip()) data['发货地址']=res res=[] for i in data['店铺']: res.append(i.strip()) data['店铺']=res data1 = data.copy() cols=data1.columns.tolist() cols.insert(2,'类别') data1=data1.reindex(columns=cols) data1[~data1['价格'].str.contains(r'^-?\d+\.?\d*$')] 标题价格类别付款人数店铺发货地址538五芳斋粽子蛋黄鲜肉粽豆沙粽栗子肉棕子新鲜散装批发团购嘉兴肉粽45.9.NaN1.0万+人付款五芳斋官方旗舰店浙江 嘉兴4376东方贺礼端午节礼盒嘉兴粽子高汤蛋黄鲜大肉粽特产现已支持定制45_NaN17人付款缘来有礼浙江 杭州 data1.loc[538,'价格']=45.9 data1.loc[4376,'价格']=45.0 data1.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 4400 entries, 0 to 4402 Data columns (total 6 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 标题 4400 non-null object 1 价格 4400 non-null float64 2 类别 4400 non-null category 3 付款人数 4329 non-null object 4 店铺 4400 non-null object 5 发货地址 4400 non-null object dtypes: category(1), float64(1), object(4) memory usage: 370.7+ KB print(data1['价格'].astype('float64').max()) data1['价格'].astype('float64').min() 1780.0 2.8 data1['类别'] = pd.cut(data1['价格'].astype('float64'), [0,360,720,1080,1440,1800],labels=['低','较低','中','较高','高']) data1['价格']=data1['价格'].astype('float64') data1.set_index('价格').sort_index(ascending=False) 标题类别付款人数店铺发货地址价格1780.0御茶膳房端午节礼品黄酒有机粽子咸鸭蛋手提竹篮礼盒装高端大礼包高12人付款御茶膳房旗舰店北京1088.0御茶膳房端午节礼品有机粽子咸鸭蛋手提竹篮礼盒装高端大礼包较高9人付款御茶膳房旗舰店北京858.0端午节礼品礼盒装组合高档有机粽子咸鸭蛋送领导高端送礼大礼包中45人付款御茶膳房旗舰店北京857.9嘉兴粽子新鲜大肉粽蛋黄肉粽甜粽竹篮粽子礼盒装组合端午送礼团购中2491人付款千味食代i浙江 嘉兴678.0米旗端午节粽子礼盒壹品私房多口味肉粽素棕海鲜粽高档礼盒送礼较低5人付款壹品优店北京..................3.2三珍斋鲜肉粽100g*2只嘉兴特产粽子速食早餐(新老包装随机发货)低NaN天猫会员店上海2.9老鼎丰东北哈尔滨特产粽子鲜肉粽甜粽蜜枣端午节手工传统新鲜蛋黄低913人付款老鼎丰旗舰店黑龙江 哈尔滨2.9久知味蛋黄鲜肉粽135g 真空粽嘉兴特产粽子速食早餐低NaN天猫会员店上海2.8久知味润香细沙粽135g 真空粽嘉兴特产粽子速食早餐低NaN天猫会员店上海2.8久知味醇香鲜肉粽135g 真空粽嘉兴特产粽子速食早餐低NaN天猫会员店上海

    4400 rows × 5 columns

    一、 第(4)小题

    data1['付款人数']=data1['付款人数'].str.replace(r'(?P<one>\d+\.?\d?)(?P<two>\w)?\+?\w*',lambda x:str(float(x.group('one'))*10000) if x.group('two')=='万' else x.group('one')) data1['付款人数'].isnull().sum() 71 data1[data1['类别']=='较低']['付款人数'].astype('float64').interpolate(method='linear') 220 935.0 322 262.0 478 28.0 496 89.0 733 4.0 787 37.0 924 26.0 1048 74.0 1087 81.0 1256 14.0 1287 22.0 1347 5.0 1415 8.0 1664 6.0 1721 37.0 1798 12.0 2002 26.0 2136 19.0 2194 8.0 2320 59.0 2326 9.0 2369 47.0 2387 14.0 2421 3.0 2436 29.0 2485 97.0 2536 25.0 2607 4.0 2729 5.0 2760 0.0 3013 3.0 3294 8.0 3779 1.0 4015 12.0 4020 9.0 4072 3.0 4080 10.0 4147 366.0 4153 15.0 4167 28.0 4172 12.0 4215 6.0 4248 7.0 4320 4.0 4356 8.0 Name: 付款人数, dtype: float64 data1[data1['类别']=='低']['付款人数'].astype('float64').interpolate(method='linear') 0 6.0 1 8.0 2 1000000.0 3 1936.0 4 9500.0 ... 4398 347.0 4399 80.0 4400 5.0 4401 149.0 4402 20.0 Name: 付款人数, Length: 4351, dtype: float64

    一、 第(5)小题

    data1.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 4400 entries, 0 to 4402 Data columns (total 6 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 标题 4400 non-null object 1 价格 4400 non-null float64 2 类别 4400 non-null category 3 付款人数 4329 non-null object 4 店铺 4400 non-null object 5 发货地址 4400 non-null object dtypes: category(1), float64(1), object(4) memory usage: 370.7+ KB d_new=('商品发货地为'+data1['发货地址'].astype('str')+',店铺为'+data1['店铺'].astype('str')+',共计'+data1['付款人数'].astype('str')+'人付款,单价为'+data1['价格'].astype('str')) d_new 0 商品发货地为浙江 嘉兴,店铺为五芳斋官方旗舰店,共计6人付款,单价为129.0 1 商品发货地为上海,店铺为天猫超市,共计8人付款,单价为44.0 2 商品发货地为浙江 嘉兴,店铺为五芳斋官方旗舰店,共计1000000.0人付款,单价为89.9 3 商品发货地为北京,店铺为稻香村食品旗舰店,共计1936人付款,单价为138.0 4 商品发货地为浙江 嘉兴,店铺为城城喂食猫,共计9500人付款,单价为3.8 ... 4398 商品发货地为浙江 嘉兴,店铺为红船旗舰店,共计347人付款,单价为7.9 4399 商品发货地为四川 乐山,店铺为峨眉山隐栗粑粑罗栗,共计80人付款,单价为93.0 4400 商品发货地为北京,店铺为北京美程嘉译,共计5人付款,单价为98.2 4401 商品发货地为安徽 合肥,店铺为chaoge1931,共计149人付款,单价为65.9 4402 商品发货地为广东 东莞,店铺为hezhiqi,共计20人付款,单价为99.0 Length: 4400, dtype: object

    一、 第(6)小题

    d_res=d_new.str.extract(r'商品发货地为(?P<发货地址>\w*.*\w*),店铺为(?P<店铺>.?\w+.?),共计(?P<付款人数>\d+\.?\d*)人付款,单价为(?P<单价>\d*\.?\d*)') d_res 发货地址店铺付款人数单价0浙江 嘉兴五芳斋官方旗舰店6129.01上海天猫超市844.02浙江 嘉兴五芳斋官方旗舰店1000000.089.93北京稻香村食品旗舰店1936138.04浙江 嘉兴城城喂食猫95003.8...............4398浙江 嘉兴红船旗舰店3477.94399四川 乐山峨眉山隐栗粑粑罗栗8093.04400北京北京美程嘉译598.24401安徽 合肥chaoge193114965.94402广东 东莞hezhiqi2099.0

    4400 rows × 4 columns

    d_res.isnull().sum() 发货地址 71 店铺 71 付款人数 71 单价 71 dtype: int64

    二、 第(1)小题

    data2=pd.read_csv('墨尔本温度数据.csv', parse_dates=['Date']) data2.head(5).append(data2.tail(5)) DateTemp01981-01-0120.711981-01-0217.921981-01-0318.831981-01-0414.641981-01-0515.836451990-12-2714.036461990-12-2813.636471990-12-2913.536481990-12-3015.736491990-12-3113.0 data2.isnull().sum() Date 0 Temp 0 dtype: int64 holidays = pd.date_range(start='19810501', end='19810503').append( pd.date_range(start='19820501', end='19820503')).append( pd.date_range(start='19830501', end='19830503')).append( pd.date_range(start='19840501', end='19840503')).append( pd.date_range(start='19850501', end='19850503')).append( pd.date_range(start='19860501', end='19860503')).append( pd.date_range(start='19870501', end='19870503')).append( pd.date_range(start='19880501', end='19880503')).append( pd.date_range(start='19890501', end='19890503')).append( pd.date_range(start='19900501', end='19900503')).append( pd.date_range(start='19811001', end='19811007')).append( pd.date_range(start='19821001', end='19821007')).append( pd.date_range(start='19831001', end='19831007')).append( pd.date_range(start='19841001', end='19841007')).append( pd.date_range(start='19851001', end='19851007')).append( pd.date_range(start='19861001', end='19861007')).append( pd.date_range(start='19871001', end='19871007')).append( pd.date_range(start='19881001', end='19881007')).append( pd.date_range(start='19891001', end='19891007')).append( pd.date_range(start='19901001', end='19901007')) holidays.to_series().dt.dayofweek 1981-05-01 4 1981-05-02 5 1981-05-03 6 1982-05-01 5 1982-05-02 6 .. 1990-10-03 2 1990-10-04 3 1990-10-05 4 1990-10-06 5 1990-10-07 6 Length: 100, dtype: int64 data2[data2['Date'] not in holidays and ~(data2['Date'].dt.dayofweek==0)]#此处应将第一个周一去除,去除天数过多,应予修改 DateTemp01981-01-0120.711981-01-0217.921981-01-0318.831981-01-0414.651981-01-0615.8.........36441990-12-2614.636451990-12-2714.036461990-12-2813.636471990-12-2913.536481990-12-3015.7

    3129 rows × 2 columns

    Processed: 0.034, SQL: 9