数据分析 NO.14 科赛网Pandas练习题

2023-11-10 12:51

本文主要是介绍数据分析 NO.14 科赛网Pandas练习题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pandas练习题
知识点:
练习一:
df=pd.read_csv( )

df[“item_name”].value_counts() 对item_name计数
df[“item_name”].unique() 列出item_name不重复的数据
df[“item_name”].nunique() 列出item_name不重复的数据的个数!!

1.将item_price转换为浮点数:

dollarizer = lambda x: float(x[1:-1])
df.item_price = df["item_price"].apply(dollarizer)

2.在该数据集对应的时期内,一共有多少订单

chipo.order_id.value_counts().count()   = chipo["order_id"].value_counts().count   总体计数
np.max(chipo["order_id"])

3.每一单(order)对应的平均总价是多少?

 order_grouped = chipo.groupby(by=['order_id']).sum()order_grouped.mean()['item_price']或chipo.groupby(by=['order_id']).sum().mean()['item_price']或
grouped=chipo.groupby("order_id").sum()
groupedvalue=grouped.mean()
groupedvalue

4.一共有多少种不同的商品被售出

chipo.item_name.value_counts().count()
chipo["item_name"].nunique()

在这里插入图片描述

练习二:
1.将数据集中的列Team, Yellow Cards和Red Cards单独存为一个名叫discipline的数据框

discipline = euro12[['Team', 'Yellow Cards', 'Red Cards']]
discipline
或
discipline=pd.DataFrame({"Team":euro12["Team"],"Yellow Cards":euro12["Yellow Cards"],"Red Cards":euro12["Red Cards"]})
discipline

2.对数据框discipline按照先Red Cards再Yellow Cards进行排序.其中Red 和Yellow 是列

discipline.sort_values(['Red Cards', 'Yellow Cards'], ascending = False)

round() :round() 方法返回浮点数x的四舍五入值。

round(80.23456, 2) :  80.23
round(100.000056, 3) :  100.0
round(-100.000056, 3) :  -100.0

3.选取以字母G开头的球队数据

euro12[euro12.Team.str.startswith('G')]
或
euro12[euro12["Team"].str.startswith("G")]

4.找到英格兰(England)、意大利(Italy)和俄罗斯(Russia)的射正率(Shooting Accuracy)


euro12.loc[euro12.Team.isin(['England', 'Italy', 'Russia']), ['Team','Shooting Accuracy']]或
不建议用下面这种!!
euro=euro12.set_index("Team")
euro.loc[['England', 'Italy', 'Russia'],"Shooting Accuracy"]

练习三:

1.打印出每个大陆每种酒类别的消耗中位数 median() 中位数

drinks.groupby('continent').median()

2.打印出每个大陆对spirit饮品消耗的平均值,最大值和最小值

grouped=drinks.groupby("continent")
grouped["spirit"].mean()
grouped["spirit"].max()
grouped["spirit"].min()grouped["spirit"].agg([np.mean,np.max,np.min])

练习4:
1.将Year的数据类型转换为 datetime64

crime.Year = pd.to_datetime(crime.Year, format='%Y')
crime.info()

通过pandas.read_csv()或者pandas.read_excel()读取文件过后,得到的数据列对应的类型是“object”,这样没法对时间数据处理,可以用过pd.to_datetime将该列数据转换为时间类型,即datetime。
在这里插入图片描述
在这里插入图片描述

自己写:
a=[lambda s:pd.to_datetime(s[“Year”],format=“%Y”) ]
b=crime[“Year”].apply(a)

直接报错Year

3.按照Year对数据框进行分组并求和
注意Population这一列,若直接对其求和,是不正确的*

crimes = crime.resample('10AS').sum()# 用resample去得到“Population”列的最大值
population = crime['Population'].resample('10AS').max()# 更新 "Population" 
crimes['Population'] = populationcrimes

4.何时是美国历史上生存最危险的年代

crime.idxmax(0)

.idxmax() 获取最大值的索引

练习5:
1.将data1data2两个数据框按照行的维度进行合并,命名为all_data

all_data = pd.concat([data1, data2])
all_data

步骤5 有问题

2.按照subject_id的值对all_datadata3作合并

merge(all_data,data,on="subject_id")

在这里插入图片描述
练习6:
1.将数据作存储并且设置前三列为合适的索引

data = pd.read_table(path6, sep = "\s+", parse_dates = [[0,1,2]]) 
data.head()
或
data.set_index(list(data.conlumns[0:3]))

read_table默认是’\t’(也就是tab)切割数据集的;
read_csv默认是’,'(也就是逗号)切割数据集的;
其他,除了方法名不一样,都一样
parse_dates = [‘col_name’] # 指定某行读取为日期格式

data1 = pd.read_csv(path6, sep = "\s+", parse_dates = [[0,1,2]]) 
data2=data1.set_index(key=data1.columns[0:3])
  1. 2061年?我们真的有这一年的数据?创建一个函数并用它去修复这个bug
def fix_century(x):year = x.year - 100 if x.year > 1989 else x.yearreturn datetime.date(year, x.month, x.day)# apply the function fix_century on the column and replace the values to the right ones
data['Yr_Mo_Dy'] = data['Yr_Mo_Dy'].apply(fix_century)# data.info()
data.head()

3.将日期设为索引,注意数据类型,应该是datetime64[ns]

# transform Yr_Mo_Dy it to date type datetime64
data["Yr_Mo_Dy"] = pd.to_datetime(data["Yr_Mo_Dy"])# set 'Yr_Mo_Dy' as the index
data = data.set_index('Yr_Mo_Dy')data.head()

pd.to_datetime( ) (1)获取指定的时间和日期。 (2)将Str和Unicode转化为时间格式
在这里插入图片描述

4.数据缺失值
.isnull()

5.创建一个名为loc_stats的数据框去计算并存储每个location的风速最小值,最大值,平均值和标准差


loc_stats = pd.DataFrame()loc_stats['min'] = data.min() # min
loc_stats['max'] = data.max() # max 
loc_stats['mean'] = data.mean() # mean
loc_stats['std'] = data.std() # standard deviationsloc_stats

6.创建一个名为day_stats的数据框去计算并存储所有location的风速最小值,最大值,平均值和标准差

day_stats = pd.DataFrame()# this time we determine axis equals to one so it gets each row.
day_stats['min'] = data.min(axis = 1) # min
day_stats['max'] = data.max(axis = 1) # max 
day_stats['mean'] = data.mean(axis = 1) # mean
day_stats['std'] = data.std(axis = 1) # standard deviationsday_stats.head()

7.对于每一个location,计算一月份的平均风速

data['date'] = data.index# creates a column for each value from date
data['month'] = data['date'].apply(lambda date: date.month)
data['year'] = data['date'].apply(lambda date: date.year)
data['day'] = data['date'].apply(lambda date: date.day)# gets all value from the month 1 and assign to janyary_winds
january_winds = data.query('month == 1')# gets the mean from january_winds, using .loc to not print the mean of month, year and day
january_winds.loc[:,'RPT':"MAL"].mean()

.query() 对进行行挑选
在这里插入图片描述

8.对于数据记录按照年为频率取样,对于数据记录按照月为频率取样

data.query('month == 1 and day == 1')data.query("day==1")

练习7:可视化

练习9:
1.将Date这个列转换为datetime类型

apple.Date = pd.to_datetime(apple.Date)
apple['Date'].head()

2.有重复的日期吗?

apple.index.is_unique

3.将index设置为升序

apple.sort_index(ascending = True).head()

4.找到每个月的最后一个交易日(business day)

apple_month = apple.resample('BM').mean()
apple_month.head()

5.数据集中最早的日期和最晚的日期相差多少天?

(apple.index.max()-apple.index,min()).days

6.在数据中一共有多少个月

apple_months = apple.resample('BM').mean()
len(apple_months.index)

7.步骤12可视化

练习10:
1.数据框中有缺失值吗?

iris.isnull().sum()

2.将列petal_length的第10到19行设置为缺失值

iris.iloc[10:20,2:3] = np.nan
iris.head(20)

3.将缺失值全部替换为1.0

iris.petal_length.fillna(1, inplace = True)

缺失值: np.nan

关于 resample函数 参考[Pandas时间序列重采样(resample)方法中closed、label的作用],(https://www.jianshu.com/p/061771f0afa9)
Resample函数使用
在这里插入图片描述

降采样:时间粒度变大。例如,原来是按天统计的数据,现在变成按周统计。降采样会涉及到数据的聚合,比如天数据变成周数据,那么就得对一周的7天数据聚合,聚合的方式可以是求和,求均值等等。
升采样:时间粒度变小。例如,原来是按周统计的数据,现在变成按天统计。升采样会涉及到数据的填充,根据填充的方法不同填充的数据也就不同。

在这里插入图片描述
在这里插入图片描述
其中"BM"是每个月的月末!

关于其余参数含义:
在这里插入图片描述
也可以通过groupby的方式进行降采样

df = pd.read_csv()
grouped_mean = df.groupyby(df["time"].apply(lambda a:a.month))
grouped_mean = df.groupby(df["datatime"].apply(lambda d:d.min)).mean()

这篇关于数据分析 NO.14 科赛网Pandas练习题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382750

相关文章

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

【Python从入门到进阶】64、Pandas如何实现数据的Concat合并

接上篇《63.Pandas如何实现数据的Merge》 上一篇我们学习了Pandas如何实现数据的Merge,本篇我们来继续学习Pandas如何实现数据的Concat合并。 一、引言 在数据处理过程中,经常需要将多个数据集合并为一个统一的数据集,以便进行进一步的分析或建模。这种需求在多种场景下都非常常见,比如合并不同来源的数据集以获取更全面的信息、将时间序列数据按时间顺序拼接起来以观察长期趋势等

C语言练习题之 数组中出现次数超过一半的数

题目描述 给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 数据范围:n≤50000,数组中元素的值0≤val≤10000 要求:空间复杂度:O(1),时间复杂度O(n) 输入描述: 保证数组输入非空,且保证有

win7下安装Canopy(EPD) 及 Pandas进行python数据分析

先安装好canopy,具体安装版本看自己需要那种,我本来是打算安装win764位的,却发现下载总是出现错误,无奈只能下载了32位的! https://store.enthought.com/downloads/#default 安装好之后,参考如下连接,进行检验: 之后再根据下面提供的连接进行操作,一般是没问题的! http://jingyan.baidu.com/article/5d6

「大数据分析」图形可视化,如何选择大数据可视化图形?

​图形可视化技术,在大数据分析中,是一个非常重要的关键部分。我们前期通过数据获取,数据处理,数据分析,得出结果,这些过程都是比较抽象的。如果是非数据分析专业人员,很难清楚我们这些工作,到底做了些什么事情。即使是专业人员,在不清楚项目,不了解业务规则,不熟悉技术细节的情况下。要搞清楚我们的大数据分析,这一系列过程,也是比较困难的。 我们在数据处理和分析完成后,一般来说,都需要形成结论报告。怎样让大

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能,但它与其他Python库(如Matplotlib和Seaborn)无缝集成,允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法: 1. 使用Matplotlib Pandas中的plot()方法实际上是基于Matplotlib的,你可以使用它来绘制各种基本图表,例如折线图、柱状图、散点图等。 import pandas

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

笔者当看到这个错误的时候一脸懵逼,在pycharm上正常运行的code 放在jupyter就不成了,于是就研究一翻。 一开始以为自己的pkl文件有问题,研究重点放在这里,最后发现不是。 然后取搜索pycharm和jupyter下的python的\Lib\site-packages\pandas\core\internals有什么不同 发现jupyter下没有pandas\core\intern

算法练习题17——leetcode54螺旋矩阵

题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。  代码 import java.util.*;class Solution {public List<Integer> spiralOrder(int[][] matrix) {// 用于存储螺旋顺序遍历的结果List<Integer> result = new ArrayList