Pandas操作题

2024-06-18 23:18
文章标签 pandas 操作题

本文主要是介绍Pandas操作题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pandas操作题

1.学生数据分析

1.数据导入并展示, 文件位置位于../data/下

  • 请将文件student-info.csv中的内容读入pandas DataFrame "df_info",注意该文件的分隔符是分号,并展示前五行
  • 请将文件student-score.csv中的内容读入pandas DataFrame "df_score",注意该文件的分隔符是分号,并展示前五行

In [1]:

 

import pandas as pd
df_info = pd.read_csv("C:/Users/PycharmProjects/pythonProject/ML/Projects/课程/资料/homework/data/student-info.csv",sep = ';')
df_info.head(5)

Out[1]:

 IDschoolsexageaddressfamsizePstatusMeduFeduMjob...higherinternetromanticfamrelfreetimegooutDalcWalchealthabsences
00GPF18UGT3A44at_home...yesnono4341136
11GPF17UGT3T11at_home...yesyesno5331134
22GPF15ULE3T11at_home...yesyesno43223310
33GPF15UGT3T42health...yesyesyes3221152
44GPF16UGT3T33other...yesnono4321254

5 rows × 31 columns

In [3]:

 

 
import pandas as pd
df_score = pd.read_csv("C:/Users/PycharmProjects/pythonProject/ML/Projects/课程/资料/homework/data/student-score.csv",sep = ';')
df_score.head(5)

Out[3]:

 IDG1G2G3
00566
11556
227810
33151415
4461010

2.把两个DataFrame "df_info" 和 "df_score" 按照学生ID对齐拼接起来,结果存在一个新DataFrame "df" 中

In [55]:

 

 
# df = pd.concat([df_info,df_score], axis=1)
# df_info.merge(df_score)
df = pd.merge(df_info,df_score,on=['ID'])

3.把"df"所有的列展示出来

In [56]:

 

df

Out[56]:

 IDschoolsexageaddressfamsizePstatusMeduFeduMjob...famrelfreetimegooutDalcWalchealthabsencesG1G2G3
00GPF18UGT3A44at_home...4341136566
11GPF17UGT3T11at_home...5331134556
22GPF15ULE3T11at_home...432233107810
33GPF15UGT3T42health...3221152151415
44GPF16UGT3T33other...432125461010
..................................................................
390390MSM20ULE3A22services...55445411999
391391MSM17ULE3T31services...2453423141616
392392MSM21RGT3T11other...55333331087
393393MSM18RLE3T32services...4413450111210
394394MSM19ULE3T11other...3233355899

395 rows × 34 columns

In [16]:

 

df.columns

Out[16]:

Index(['ID', 'school', 'sex', 'age', 'address', 'famsize', 'Pstatus', 'Medu','Fedu', 'Mjob', 'Fjob', 'reason', 'guardian', 'traveltime', 'studytime','failures', 'schoolsup', 'famsup', 'paid', 'activities', 'nursery','higher', 'internet', 'romantic', 'famrel', 'freetime', 'goout', 'Dalc','Walc', 'health', 'absences', 'ID', 'G1', 'G2', 'G3'],dtype='object')

4.统计男生的平均分和女生的平均分(G1, G2, G3),使用groupby和aggregate来操作

In [59]:

 

 
group_by_sex = df.groupby('sex').agg('mean')
group_by_sex[['G1','G2','G3']]
#group_by_sex = df.groupby('sex').mean()
#group_by_sex[['G1','G2','G3']]

Out[59]:

 G1G2G3
sex   
F10.62019210.3894239.966346
M11.22994711.07486610.914439

In [60]:

 

group_by_agg = group_by_sex.aggregate('mean')
group_by_agg[['G1','G2','G3']]

Out[60]:

G1    10.925069
G2    10.732145
G3    10.440392
dtype: float64

5.统计不同年龄的学生(G1, G2, G3)的平均分,并作出柱状图展示

In [70]:

 

 
group_by_age = df.groupby('age').mean()
#group_by_age[['G1','G2','G3']]
group_by_age[['G1','G2','G3']].plot(kind='bar')

Out[70]:

<AxesSubplot:xlabel='age'>

6.统计不同学校(school一列)的学生的平均分,并作柱状图展示,要求同一科目的两个学校成绩贴在一起展示

In [88]:

 

 
group_by_school=df.groupby('school').agg('mean').transpose()
group_by_school.plot(kind='bar')
#roup_by_school.T.plot(kind='bar')

Out[88]:

<AxesSubplot:>

7.统计一下每个学校三个科目总分的前十名,然后把前十名的同学所有信息输出

In [201]:

 

 
#group_by_school=df.groupby(['school']).agg('sum').transpose()
# group_by_school['G1','G2','G3']
df["total"] = df["G1"] + df["G2"]+ df["G3"]
df.groupb
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-201-88778c814a96> in <module>3 4 df["total"] = df["G1"] + df["G2"]+ df["G3"]
----> 5 df.groupby['school']6 # df.groupby(['school','total'])7 TypeError: 'method' object is not subscriptable

2.沃尔玛销售数据整理

1. 数据导入并展示, 文件位置位于 ../data下

  • 请将文件 stores.csv 中的内容读入pandas DataFrame "df_stores",并展示前五行以及打印df_stores的shape

In [211]:

 

 
import pandas as pd
df_stores = pd.read_csv(r"C:\Users\PycharmProjects\pythonProject\ML\Projects\课程\资料\homework\data\walmart\walmart\stores.csv")
df_stores.head(5)

Out[211]:

 StoreTypeSize
01A151315
12A202307
23B37392
34A205863
45B34875

In [212]:

 

df_stores.shape

Out[212]:

(45, 3)
  • 请将文件 features.csv 中的内容读入pandas DataFrame "df_feats",将df_feats改成只留下以下几个columns: "Store", "Date", "Temperature", "Fuel_Price", "CPI", "Unemployment", 并展示前五行以及打印df_feats的shape

In [215]:

 

 
df_feats = pd.read_csv(r"C:\Users\PycharmProjects\pythonProject\ML\Projects\课程\资料\homework\data\walmart\walmart\features.csv")
df_feats.loc[:,["Store", "Date", "Temperature", "Fuel_Price", "CPI", "Unemployment"]].head()

Out[215]:

 StoreDateTemperatureFuel_PriceCPIUnemployment
012010-02-0542.312.572211.0963588.106
112010-02-1238.512.548211.2421708.106
212010-02-1939.932.514211.2891438.106
312010-02-2646.632.561211.3196438.106
412010-03-0546.502.625211.3501438.106

In [217]:

 

df_feats.shape

Out[217]:

(8190, 12)
  • 请将文件 sales.csv 中的内容读入pandas DataFrame "df_sales",并展示前五行以及打印df_sales的shape

In [219]:

 

 
df_sales = pd.read_csv(r"C:\Users\PycharmProjects\pythonProject\ML\Projects\课程\资料\homework\data\walmart\walmart\sales.csv")
df_sales.head(5)

Out[219]:

 StoreDeptDateWeekly_SalesIsHoliday
0112010-02-0524924.50False
1112010-02-1246039.49True
2112010-02-1941595.55False
3112010-02-2619403.54False
4112010-03-0521827.90False

In [220]:

 

df_sales.shape

Out[220]:

(421570, 5)

8. 我们发现 df_sales 中每个Store有很多个Dept(department), 我们只关心整家店的销售情况,所以请把这张表格按照Store和Date来计算整店销售总额,IsHoliday这一列不必保留。结果保存在df_sales_by_store中

In [257]:

 

 
df_sales_by_store=df_sales.loc[:,["Store", "Dept", "Date", "Weekly_Sales"]].groupby(['Store','Date']).sum()
df_sales_by_store

Out[257]:

  DeptWeekly_Sales
StoreDate  
12010-02-0531841643690.90
2010-02-1231371641957.44
2010-02-1931841611968.17
2010-02-2631371409727.59
2010-03-0532151554806.68
............
452012-09-282853713173.95
2012-10-052952733455.07
2012-10-122853734464.36
2012-10-192853718125.53
2012-10-262907760281.43

6435 rows × 2 columns

9. 使用 Store 和 Date 这两列合并 df_sales_by_store 和 df_feats 两张表格,结果保存在 df_sale_feats 。

In [261]:

 

 
df_sale_feats = pd.merge(df_sales_by_store,df_feats,on=['Store','Date'])
df_sale_feats

Out[261]:

 StoreDateDeptWeekly_SalesTemperatureFuel_PriceMarkDown1MarkDown2MarkDown3MarkDown4MarkDown5CPIUnemploymentIsHoliday
012010-02-0531841643690.9042.312.572NaNNaNNaNNaNNaN211.0963588.106False
112010-02-1231371641957.4438.512.548NaNNaNNaNNaNNaN211.2421708.106True
212010-02-1931841611968.1739.932.514NaNNaNNaNNaNNaN211.2891438.106False
312010-02-2631371409727.5946.632.561NaNNaNNaNNaNNaN211.3196438.106False
412010-03-0532151554806.6846.502.625NaNNaNNaNNaNNaN211.3501438.106False
.............................................
6430452012-09-282853713173.9564.883.9974556.6120.641.501601.013288.25192.0135588.684False
6431452012-10-052952733455.0764.893.9855046.74NaN18.822253.432340.01192.1704128.667False
6432452012-10-122853734464.3654.474.0001956.28NaN7.89599.323990.54192.3272658.667False
6433452012-10-192853718125.5356.473.9692004.02NaN3.18437.731537.49192.3308548.667False
6434452012-10-262907760281.4358.853.8824018.9158.08100.00211.94858.33192.3088998.667False

6435 rows × 14 columns

10. 使用 Store 这一列合并 df_sale_feats 和 df_stores 两张表格,结果仍然保留在df_sale_feats 中。

In [266]:

 

df_sale_feats = pd.merge(df_sale_feats,df_stores,on=['Store'])
df_sale_feats

Out[266]:

 StoreDateDeptWeekly_SalesTemperatureFuel_PriceMarkDown1MarkDown2MarkDown3MarkDown4MarkDown5CPIUnemploymentIsHolidayTypeSize
012010-02-0531841643690.9042.312.572NaNNaNNaNNaNNaN211.0963588.106FalseA151315
112010-02-1231371641957.4438.512.548NaNNaNNaNNaNNaN211.2421708.106TrueA151315
212010-02-1931841611968.1739.932.514NaNNaNNaNNaNNaN211.2891438.106FalseA151315
312010-02-2631371409727.5946.632.561NaNNaNNaNNaNNaN211.3196438.106FalseA151315
412010-03-0532151554806.6846.502.625NaNNaNNaNNaNNaN211.3501438.106FalseA151315
...................................................
6430452012-09-282853713173.9564.883.9974556.6120.641.501601.013288.25192.0135588.684FalseB118221
6431452012-10-052952733455.0764.893.9855046.74NaN18.822253.432340.01192.1704128.667FalseB118221
6432452012-10-122853734464.3654.474.0001956.28NaN7.89599.323990.54192.3272658.667FalseB118221
6433452012-10-192853718125.5356.473.9692004.02NaN3.18437.731537.49192.3308548.667FalseB118221
6434452012-10-262907760281.4358.853.8824018.9158.08100.00211.94858.33192.3088998.667FalseB118221

6435 rows × 16 columns

In [ ]:

 

 

这篇关于Pandas操作题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

pandas数据过滤

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

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

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

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

数据处理与数据填充在Pandas中的应用

在数据分析和机器学习项目中,数据处理是至关重要的一步。Pandas作为Python中用于数据分析和操作的一个强大库,提供了丰富的功能来处理和清洗数据。本文将深入探讨Pandas在数据处理,特别是数据填充方面的应用。 在实际的数据集中,缺失值(Missing Values)或异常值(Outliers)是常见的问题。这些不完整或错误的数据如果不加以处理,会严重影响数据分析的准确性和机器学习模型的性能

【python pandas】 Dataframe的数据print输出 显示为...省略号

pandas.set_option() 可以设置pandas相关的参数,从而改变默认参数。 打印pandas数据事,默认是输出100行,多的话会输出….省略号。 那么可以添加: pandas.set_option('display.max_rows',None) 这样就可以显示全部数据 同样,某一列比如url太长 显示省略号 也可以设置。 pd.set_option('display.

Python|玩转 Excel:Pandas、openpyxl、pywin32

文章目录 引言Pandas读取 Excel写入 Excel数据操作样式设置数据验证公式支持 openpyxl读取 Excel写入 Excel数据操作样式设置数据验证公式支持图表创建 xlrd / xlwt读取 Excel(xlrd)写入 Excel(xlwt) pyxlsb读取 Excel(pyxlsb) xlsxwriter写入 Excel样式设置公式支持图表创建 pywin32 (Win

10Python的Pandas:样式Style

Pandas 提供了多种样式选项,可以让你对数据框的显示进行格式化。这些样式可以帮助突出显示数据中的某些元素、设置颜色、格式化数字等。以下是一些常用的 Pandas 样式示例: 1. 基本样式设置 要为整个数据框应用样式,可以使用 style 属性。例如,你可以为所有的数值设置显示格式: import pandas as pd# 创建示例数据框df = pd.DataFrame({'A':

Python文件读写readline()、readlines()、CSV库、pandas库

1.readline() .readline()每次只读取一行,通常比 .readlines()慢得多;仅当没有足够内存可以一次读取整个文件时,才应该使用.readline()。  f = open('poem.txt','r') result = list() for line in open('poem.txt'): line = f.readline() print line