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字段中每种编程语言出现的次数。

import pandas as pd
import numpy as np
from pandas import DataFrame, Series
language = Series(["Python","C","Scala","Java","GO","Scala","SQL","PHP","Python"])
score = Series(np.random.randint(10, size = (9,)))
df = DataFrame({'language':language, 'score':score})
print('该DataFrame的前4行数据')
print(df.head(4))
print('输出该DataFrame中language字段为Python的行;')
print(df[df.language == 'Python'])
print('将DataFrame按照score字段的值进行升序排序')
print(df.sort_values('score',inplace=True))
print('统计language字段中每种编程语言出现的次数。')
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)分别

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


import pandas as pd
df = pd.read_csv('drinks.csv')

print("用pandas将酒类消费数据表中的数据读取为DataFrame,输出包含缺失值的行")
print(df.loc[df.continent.isnull()].index)
# 直接全部替换为’NA’
df = df.fillna('NA')
# 或者在读取数据时加入参数keep_default_na=False
df = pd.read_csv('drinks.csv', keep_default_na=False)

print('分别输出各个大洲的平均啤酒、烈酒和红酒的消费量;')
print(df.groupby('continent')[['beer_servings', 'spirit_servings', 'wine_servings']].mean())

print("输出啤酒消费量最高的国家")
print(df.iloc[df.beer_servings.argmax(), 0])

print("输出烈酒消费量最高的国家")
print(df.iloc[df.spirit_servings.argmax(), 0])

print("输出红酒消费量最高的国家")
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狗狗币每日成交量折线图


import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('DOGE-USD.csv')
print('查看各个列的数据类型')
print(df.dtypes) 

# 可见Date字段不是日期类型
df.Date = pd.to_datetime(df.Date)
print('查看各个列的数据类型')
print(df.dtypes) 

print('查看否存在缺失值')
print(df.info())

# 可见除了Date字段外,其余字段都存在缺失值
df['Date'].loc[df['Open'].isnull()]


df['Date'].loc[df['Close'].isnull()]


df['Date'].loc[df['High'].isnull()]


df['Date'].loc[df['Low'].isnull()]


df['Date'].loc[df['Volume'].isnull()]

# 可见存在缺失值的日期有四个
df = df.fillna(method='pad')

print('输出狗狗币价格的最高值')
print(df.High.max())

print('输出狗狗币价格的最低值')
print(df.High.max())

print('输出达到最高值与最低值的日期')
print(df['Date'].loc[df['High'].argmax()])

print('输出达到最高值与最低值的日期')
print(df['Date'].loc[df['Low'].argmin()])

#画出狗狗币每天最高价格的折线图(横轴为日期)
plt.plot(df.Date, df.High)
plt.show()

#画出狗狗币成交量的折线图(横轴为日期)。
plt.plot(df.Date, np.log10(df.Volume))
plt.show()


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

  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值