当前位置:   article > 正文

Series和DataFrame的创建和pandas数据清洗和数据分析的常用操作_分别输出各个大洲的平均啤酒、烈酒和红酒的消费量;

分别输出各个大洲的平均啤酒、烈酒和红酒的消费量;

(1)根据列表["Python","C","Scala","Java","GO","Scala","SQL","PHP","Python"]创建一个变量名为language的Series;

(2)创建一个由随机整型组成的Series,要求长度与language相同,变量名为score;

(3)根据language和score创建一个DataFrame;

(4)输出该DataFrame的前4行数据;

(5)输出该DataFrame中language字段为Python的行;

(6)将DataFrame按照score字段的值进行升序排序

(7)统计language字段中每种编程语言出现的次数。

  1. import pandas as pd
  2. import numpy as np
  3. from pandas import DataFrame, Series
  4. language = Series(["Python","C","Scala","Java","GO","Scala","SQL","PHP","Python"])
  5. score = Series(np.random.randint(10, size = (9,)))
  6. df = DataFrame({'language':language, 'score':score})
  7. print('该DataFrame的前4行数据')
  8. print(df.head(4))
  9. print('输出该DataFrame中language字段为Python的行;')
  10. print(df[df.language == 'Python'])
  11. print('将DataFrame按照score字段的值进行升序排序')
  12. print(df.sort_values('score',inplace=True))
  13. print('统计language字段中每种编程语言出现的次数。')
  14. print(df.language.value_counts())

二. 酒类消费数据

给定一个某段时间内各个国家的酒类消费数据表drinks.csv,其中包含6个字段,表8-1给出了该表中的字段信息。

表8-1 酒类消费数据表的字段信息

Country

国家

beer_servings

啤酒消费量

spirit_servings

烈酒消费量

wine_servings

红酒消费量

total_litres_of_pure_alcohol

纯酒精消费总量

Continent

所在的大洲

完成以下的任务:

(1)用pandas将酒类消费数据表中的数据读取为DataFrame,输出包含缺失值的行;

(2)在使用read_csv函数读取酒类消费数据表时(除文件地址外不添加额外的参数),pandas将continent字段中的“NA”(代表北美洲,North American)自动识别为NaN。因此,需要将continent字段中的NaN全部替换为字符串NA。如果学有余力,可以自行在网络上调研如何在read_csv函数中添加参数使NA不被识别为NaN;

(3)分别输出各个大洲的平均啤酒、烈酒和红酒的消费量;

(4)分别

输出啤酒、烈酒和红酒消费量最高的国家。

  1. import pandas as pd
  2. df = pd.read_csv('drinks.csv')
  3. print("用pandas将酒类消费数据表中的数据读取为DataFrame,输出包含缺失值的行")
  4. print(df.loc[df.continent.isnull()].index)
  5. # 直接全部替换为’NA’
  6. df = df.fillna('NA')
  7. # 或者在读取数据时加入参数keep_default_na=False
  8. df = pd.read_csv('drinks.csv', keep_default_na=False)
  9. print('分别输出各个大洲的平均啤酒、烈酒和红酒的消费量;')
  10. print(df.groupby('continent')[['beer_servings', 'spirit_servings', 'wine_servings']].mean())
  11. print("输出啤酒消费量最高的国家")
  12. print(df.iloc[df.beer_servings.argmax(), 0])
  13. print("输出烈酒消费量最高的国家")
  14. print(df.iloc[df.spirit_servings.argmax(), 0])
  15. print("输出红酒消费量最高的国家")
  16. print(df.iloc[df.wine_servings.argmax(), 0])

三. 狗狗币的历史价格

狗狗币(Dogecoin)是世界上用户数量仅次于比特币的第二大虚拟货币。给定一个狗狗币2014年9月17日至2021年3月1日的历史价格表DOGE-USD.csv,里面包含了6个字段,表8-2给出了该表中的字段信息。

表8-2 历史价格表的字段信息

Date

日期

Open

当天的开盘价格

High

当天的最高价格

Low

当天的最低价格

Close

当天的收盘价格

Volume

当天的成交量

完成以下的任务:

(1)用pandas将历史价格表中的数据读取为DataFrame,并查看各个列的数据类型。在读取数据时,pandas是否将表中的日期字段自动读取为日期类型?若否,则将其转换为日期类型;

(2)该DataFrame中是否存在缺失值?若是,则输出数据缺失的日期,并用前一交易日的数据填充缺失值;

(3)分别输出狗狗币价格的最高值与最低值,并分别输出达到最高值与最低值的日期;

(4)画出狗狗币每天最高价格的折线图(横轴为日期);

图8-1 狗狗币每天最高价格折线图

(5)画出狗狗币成交量的折线图(横轴为日期)。由于成交量字段中的数据数量级变化较大,直接画图无法直观地观察出其变化趋势,尝试画出更直观的成交量折线图(提示:取对数)。

图8-2狗狗币每日成交量折线图

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. df = pd.read_csv('DOGE-USD.csv')
  5. print('查看各个列的数据类型')
  6. print(df.dtypes)
  7. # 可见Date字段不是日期类型
  8. df.Date = pd.to_datetime(df.Date)
  9. print('查看各个列的数据类型')
  10. print(df.dtypes)
  11. print('查看否存在缺失值')
  12. print(df.info())
  13. # 可见除了Date字段外,其余字段都存在缺失值
  14. df['Date'].loc[df['Open'].isnull()]
  15. df['Date'].loc[df['Close'].isnull()]
  16. df['Date'].loc[df['High'].isnull()]
  17. df['Date'].loc[df['Low'].isnull()]
  18. df['Date'].loc[df['Volume'].isnull()]
  19. # 可见存在缺失值的日期有四个
  20. df = df.fillna(method='pad')
  21. print('输出狗狗币价格的最高值')
  22. print(df.High.max())
  23. print('输出狗狗币价格的最低值')
  24. print(df.High.max())
  25. print('输出达到最高值与最低值的日期')
  26. print(df['Date'].loc[df['High'].argmax()])
  27. print('输出达到最高值与最低值的日期')
  28. print(df['Date'].loc[df['Low'].argmin()])
  29. #画出狗狗币每天最高价格的折线图(横轴为日期)
  30. plt.plot(df.Date, df.High)
  31. plt.show()
  32. #画出狗狗币成交量的折线图(横轴为日期)。
  33. plt.plot(df.Date, np.log10(df.Volume))
  34. plt.show()

注意:cvs文件和python代码放于同一目录下,或更改路径。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/142179
推荐阅读
相关标签
  

闽ICP备14008679号