pandas打印全部列_python——pandas练习题1-5

练习1-开始了解你的数据

探索Chipotle快餐数据

相应数据集:chipotle.tsv

import pandas as pd
chipo=pd.read_csv("exercise_data/chipotle.tsv",sep='t')
chipo.head(5)

aea01c9a03a69e62a4dbde99c917e086.png
chipo.shape[0]  #查看有多少行4622chipo.shape[1]  #查看有多少列5chipo.columns  #打印所有列名Index(['order_id', 'quantity', 'item_name', 'choice_description','item_price'],dtype='object')chipo.index #打印索引RangeIndex(start=0, stop=4622, step=1)
c=chipo[['item_name','quantity']].groupby(['item_name'],as_index=False).agg({'quantity':sum})
c.sort_values(['quantity'],ascending=False,inplace=True)
c.head(5)
#被下单数最多商品(item)是什么?

bdcfdf03139368379713df5b16c56780.png
chipo['item_name'].nunique()
#在item_name这一列中,一共有多少种商品被下单?5chipo['choice_description'].value_counts().head()
#在choice_description中,下单次数最多的商品是什么?

614ea2e8de79ac2c0eaa86c9d7dcb379.png
chipo['quantity'].sum()
#一共有多少商品被下单?4972

lambda函数,apply和map区别

dollarizer = lambda x: float(x[1:-1])   
#x为item_price这列组成的数组,对其切片,取第二个(下标为1)到最后一个数,即把美元符号去掉
chipo['item_price'] = chipo['item_price'].apply(dollarizer)
#将item_price转换为浮点数

bfa9e183457fb15cd25889a98c0fc124.png
chipo['revenue']=chipo['quantity']*chipo['item_price']
total=round(chipo['revenue'].sum(),2)
total
#在该数据集对应的时期内,收入(revenue)是多少39237.02
chipo['order_id'].nunique()
#在该数据集对应的时期内,一共有多少订单?1834

先分组,再求和,再求平均

c=round(chipo[['order_id','revenue']].groupby(['order_id']).agg({'revenue':sum})['revenue'].mean(),2)
c
#每一单(order)对应的平均总价是多少?21.39

练习2-数据过滤与排序

探索2012欧洲杯数据

相应数据集:Euro2012_stats.csv

import pandas as pd
euro=pd.read_csv("Euro2012_stats.csv")
euro.head()

f84c07b3e39f0fe7338e7ca612a612e0.png
#只选取 Goals 这一列
euro['Goals']0      4
1      4
2      4
3      5
4      3
5     10
6      5
7      6
8      2
9      2
10     6
11     1
12     5
13    12
14     5
15     2
Name: Goals, dtype: int64
#有多少球队参与了2012欧洲杯?
euro.shape[0]16#该数据集中一共有多少列(columns)?
euro.shape[1]35#将数据集中的列Team, Yellow Cards和Red Cards单独存为一个名叫discipline的数据框
discipline=euro[['Team','Yellow Cards','Red Cards']]
discipline.head()

8f98ae0a5dd660cd4c75008175063f37.png
#对数据框discipline按照先Red Cards再Yellow Cards进行排序
discipline.sort_values(['Red Cards','Yellow Cards'],ascending=False)

6bcac6266b8f45b8a9a4c05d2e2be778.png
#计算每个球队拿到的黄牌数的平均值
round(discipline['Yellow Cards'].mean())7#找到进球数Goals超过6的球队数据
euro[euro['Goals']>6]

a19447d6b328372116d842205165e7d1.png
#选取以字母G开头的球队数据
euro[euro['Team'].str.startswith('G')]

aaa02685200812b76adf6871c6b3071d.png
#选取前7列   
euro.iloc[:,0:7]   #切片

ac5587cabc3cb5d473ab87e7e4cb8a39.png

按行号列号切片

#选取除了最后3列之外的全部列
euro.iloc[:,0:-3]

28b90fd0d3879e73bf5d22ab218f4cb2.png

按列名切片

#找到英格兰(England)、意大利(Italy)和俄罗斯(Russia)的射正率(Shooting Accuracy)
euro.loc[euro.Team.isin(['England','Italy','Russia']),['Team','Shooting Accuracy']]

95071d8a90243a459008ef91a9dd4c8c.png

练习3-数据分组

探索酒类消费数据

相应数据集:drinks.csv

import pandas as pd
drinks=pd.read_csv(r"/Users/a2016/exercise_data/drinks.csv")
drinks.head()

2f5a72523bd23b76e6799447fc6cca8b.png
#哪个大陆(continent)平均消耗的啤酒(beer)更多?
drinks.groupby(['continent'])['beer_servings'].mean()

02ce6978c2aadbc6a577fe4fba807dbc.png
#打印出每个大陆(continent)的红酒消耗(wine_servings)的描述性统计值
drinks.groupby(['continent'])['wine_servings'].describe()

a02f188d74067801db408224b4b12fab.png
#打印出每个大陆每种酒类别的消耗平均值
drinks.groupby(['continent']).mean()

eaa460686bd1596ed84b7b1497b3e7dd.png

求中位数 median()

#打印出每个大陆每种酒类别的消耗中位数
drinks.groupby(['continent']).median()

1289bd6ab7749a28793222a4fff0bd4b.png
#打印出每个大陆对spirit饮品消耗的平均值,最大值和最小值
drinks.groupby(['continent'])['spirit_servings'].agg(['mean','max','min'])

c1597a44ccfff04c353330c42b1d2bee.png

练习4-Apply函数

探索1960-2014美国犯罪数据

相应数据集:US_Crime_Rates_1960_2014.csv

import pandas as pd
US=pd.read_csv(r"/Users/a2016/exercise_data/US_Crime_Rates_1960_2014.csv")
US.head()

91a1144655a51ddaabf0372a172f2626.png
#每一列(column)的数据类型是什么样的?
US.dtypesYear                  int64
Population            int64
Total                 int64
Violent               int64
Property              int64
Murder                int64
Forcible_Rape         int64
Robbery               int64
Aggravated_assault    int64
Burglary              int64
Larceny_Theft         int64
Vehicle_Theft         int64
dtype: object

注意到Year的数据类型为int64,但是pandas有一个不同的数据类型去处理时间序列(time series),将year的数据类型更改。

#将Year的数据类型转换为 datetime64
US['Year']=pd.to_datetime(US['Year'],format='%Y')
US.dtypes Year                  datetime64[ns]
Population                     int64
Total                          int64
Violent                        int64
Property                       int64
Murder                         int64
Forcible_Rape                  int64
Robbery                        int64
Aggravated_assault             int64
Burglary                       int64
Larceny_Theft                  int64
Vehicle_Theft                  int64
dtype: object
#将列Year设置为数据框的索引
US = US.set_index('Year', drop = True)
US.head()

a3b7df6ba04d693fe522c573a094af9d.png
#删除名为Total的列
del US['Total']
US.head()

902c34ebee4a7e84ae96d01a460776e4.png
#日期汇总数据,将数据以10AS十年聚合日期第一天开始的形式进行聚合 索引
US.resample('10AS').sum()

36d4013f11b618e1c84b8146e114acc8.png
#按照Year对数据框进行分组并求和

***注意Population这一列,若直接对其求和,是不正确的***

resample 的介绍

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html​pandas.pydata.org
# 用resample去得到“Population”列的每十年中的最大值
population = US['Population'].resample('10AS').max()
populationYear
1960-01-01    201385000
1970-01-01    220099000
1980-01-01    248239000
1990-01-01    272690813
2000-01-01    307006550
2010-01-01    318857056
Freq: 10AS-JAN, Name: Population, dtype: int64
#让每十年中的最大值代替population这一列
US1['Population']=population
US1

ffdd2b9a91b65b7e3ba52fc40da5bb4a.png
#何时是美国历史上生存最危险的年代?
US.idxmax(0)

0110c17cf37486d14b0a07426ce0021a.png

练习5-合并

探索虚拟姓名数据

相应数据集:练习自定义的数据集

import pandas as pd
import numpy as np
# 运行以下代码
raw_data_1 = {'subject_id': ['1', '2', '3', '4', '5'],'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}raw_data_2 = {'subject_id': ['4', '5', '6', '7', '8'],'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}raw_data_3 = {'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],'test_id': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}# 运行以下代码
data1 = pd.DataFrame(raw_data_1, columns = ['subject_id', 'first_name', 'last_name'])
data2 = pd.DataFrame(raw_data_2, columns = ['subject_id', 'first_name', 'last_name'])
data3 = pd.DataFrame(raw_data_3, columns = ['subject_id','test_id'])

纵向合并两个表,用concat。前提是两个表的列名对应

#将data1和data2两个数据框纵向合并,命名为all_data
all_data=pd.concat([data1,data2])
all_data

f2a5e4374562fe560fd4d432102cf413.png
#将data1和data2两个数据框横向合并,命名为all_data_col
all_data_col=pd.concat([data1,data2],axis=1)
all_data_col

48f0a09884693e3d630d6bf598608a3d.png
#按照subject_id的值对all_data和data3作合并
pd.merge(all_data,data3,on='subject_id')

ec5c9d5cbb131467400ff3dba0827ac0.png
【python】详解pandas库的pd.merge函数_brucewong0516的博客-CSDN博客_pd.merge​blog.csdn.net
178b2666b83a687180fa361ef856146c.png
#对data1和data2按照subject_id作连接
pd.merge(data1,data2,on='subject_id',how='inner')

425fc0461ee8c9497c853ef7aac13cd7.png
#找到 data1 和 data2 合并之后的所有匹配结果
pd.merge(data1,data2,on='subject_id',how='outer')

c0a7ec830be50b647e9f851458db3993.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【POJ - 2406】Power Strings (KMP,最小循环节)

题干: Given two strings a and b we define a*b to be their concatenation. For example, if a "abc" and b "def" then a*b "abcdef". If we think of concatenation as multiplication, exponentiation by a non-negative in…

python wmi mac变动_Python WMI参数反转

使用python的wmi模块创建vss快照,我发现除非将它们反向,否则这些参数将不起作用:importwmidefvss_create():shadow_copy_servicewmi.WMI(monikerwinmgmts:\\\\.\\root\\cimv2:Win32_ShadowCopy)resshadow_copy_service.Create(ClientAccessib…

【 HDU - 2594 】Simpsons’ Hidden Talents(KMP应用,求最长前缀后缀公共子串)

题干: Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. Marge: Yeah, what is it? Homer: Take me for example. I want to find out if I have a talent in politics, OK? Marge: OK. Homer: So I take…

python两次调用write连续写入的数据之间_两次调用文件的write 方法,以下选项中描述正确的是...

两次调用文件的write 方法,以下选项中描述正确的是答:连续写入的数据之间无分隔符中国大学MOOC: 斜弯曲、拉(压)弯曲组合变形的危险点都是单向应力状态。答:对急性宫外孕破裂或的最主要症状是答:突然一侧下腹部撕裂样疼痛Some thi…

拉格朗日差值 - 杜教板子

牛客网暑期ACM多校训练营(第一场) F Sum of Maximum 杜教板子&#xff1a; 证明https://blog.csdn.net/Lee_w_j__/article/details/81135539 #include <cstdio> #include <iostream> #include <vector> #include <cstring> #include <algorithm&…

python归并排序 分词_python实现归并排序,归并排序的详细分析

学习归并排序的过程是十分痛苦的。它并不常用&#xff0c;看起来时间复杂度好像是几种排序中最低的&#xff0c;比快排的时间复杂度还要低&#xff0c;但是它的执行速度不是最快的。很多朋友不理解时间复杂度低为什么运行速度不一定快&#xff0c;这个不清楚的伙伴可以看下我之…

CCFCSP 2018年9月 -- 部分题目

CCF201809 -- 第一题 &#xff1a;买菜 问题描述   在一条街上有n个卖菜的商店&#xff0c;按1至n的顺序排成一排&#xff0c;这些商店都卖一种蔬菜。   第一天&#xff0c;每个商店都自己定了一个正整数的价格。店主们希望自己的菜价和其他商店的一致&#xff0c;第二天…

servlet中显示mysql字段_Java Servlet:从数据库获取信息并在屏幕上显示它

创建它代表了表的每一个项目(行)一个JavaBean类。创建一个使用JDBC返回这些项目列表的DAO类。然后在servlet中&#xff0c;只需使用HttpServletRequest#setAttribute()将请求范围中的项目列表&#xff0c;使用RequestDispatcher#forward()将请求转发到JSP文件&#xff0c;并使用…

【CodeForces - 689B】Mike and Shortcuts(Dijkstra最短路,或者bfs跑状态类似spfa)

题干&#xff1a; Recently, Mike was very busy with studying for exams and contests. Now he is going to chill a bit by doing some sight seeing in the city. City consists of n intersections numbered from 1 to n. Mike starts walking from his house located a…

sqlserver mysql分页_SQLServer与MySQL中分页查询sql语句示例

/***author blovedr*功能&#xff1a;SQLServer与MySQL中分页查询sql语句示例*日期&#xff1a; 2018年8月17日 10:58*注释&#xff1a; 学习数据库MySQL的点点记录&#xff0c; 谢谢网上各位大神分享经验与资料&#xff0c; 欢迎大神批评与交流。*/分页查询 2018.8.16 …

【51Nod - 1103】N的倍数 (思维,鸽巢原理也叫抽屉定理,求倍数问题取模)

题干&#xff1a; 一个长度为N的数组A&#xff0c;从A中选出若干个数&#xff0c;使得这些数的和是N的倍数。 例如&#xff1a;N 8&#xff0c;数组A包括&#xff1a;2 5 6 3 18 7 11 19&#xff0c;可以选2 6&#xff0c;因为2 6 8&#xff0c;是8的倍数。 Input 第1行…

java位操作_关于java按位操作运算

<1>.在了解位移之前&#xff0c;先了解一下正数和负数的二进制表示形式以及关系&#xff1a;举例15和-15&#xff1a;15 的原码&#xff1a; 00000000 00000000 00000000 00001111补码&#xff1a; 11111111 11111111 11111111 111100001 -15的原码&#xff1a;11111111 …

【51Nod - 1117 】聪明的木匠 (贪心,哈夫曼树,时光倒流)

题干&#xff1a; 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN&#xff08;1 < L1,L2,…,LN < 1000&#xff0c;且均为整数&#xff09;个长度单位。我们认为切割时仅在整数点处切且没有木材损失。 木匠发现&#xff0c;每一次切割花费的体…

java生成16位随机数_java中如何产生一个16位数字组成的随机字符串?谢谢各位了...

展开全部方法如下&#xff1a;Random rannew random();boolean flagtrue;while(flag){int aran.nextInt(99999999);int bran.nextInt(99999999);long ca*100000000Lb;if(c>1000000000000000L&&c<9999999999999999L){flagfalse;c1c;String numString.valueOf(c1);…

java utf-8 gbk_Java 字符转码之UTF-8转为GBK/GB2312

java跟python类似的做法&#xff0c;在java中字符串的编码是java修改过的一种Unicode编码&#xff0c;所以看到java中的字符串&#xff0c;心理要默念这个东西是java修改过的一种Unicode编码的编码。packagestring;importjava.nio.charset.Charset;public classUTF82GBK {publi…

【CodeForces - 760B 】Frodo and pillows (二分题意,注意细节)

题干&#xff1a; n hobbits are planning to spend the night at Frodos house. Frodo has n beds standing in a row and m pillows (n ≤ m). Each hobbit needs a bed and at least one pillow to sleep, however, everyone wants as many pillows as possible. Of cour…

eclipse wsdl2java_使用Eclipse的wsdl2java工具

一、用Eclipse调用Axis的wsdl2java1.在eclipse里面新建一个项目或已有的项目&#xff1b;2.导入activation.jaraxis.jarcommons-discovery.jarcommons-logging-1.0.3.jarjaxrpc.jarsaaj.jarwsdl4j-1.5.2.jar包3右击你的工程&#xff0d;Run As&#xff0d;Run...&#xff0d;右…

【POJ - 2785】4 Values whose Sum is 0 (二分,折半枚举)

题干&#xff1a; The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A x B x C x D are such that a b c d 0 . In the following, we assume that all lists have the same…

java好的博客_推荐5个万博爆款Java开源博客,是我目前用过最好用的博客系统

1.OneBlog一个简洁美观、功能强大并且自适应的Java博客&#xff0c;使用springboot开发&#xff0c;前端使用Bootstrap&#xff0c;支持移动端自适应&#xff0c;配有完备的前台和后台管理功能。功能简介多种编辑器、自动申请友情链接、百度推送、评论系统、权限管理、SEO、实时…

【UVALive - 3126】Taxi Cab Scheme (二分图,最小路径覆盖)

题目大意&#xff1a; 有n个出车安排&#xff0c;一辆车能接到这个安排的条件是&#xff1a;1、这辆车第一次发车&#xff1b;2、这辆车接了上一个安排&#xff0c;回到这个安排的起点的时间正好是这个安排的前一分钟或者更早 解题报告&#xff1a; 建图然后跑最小路径覆盖。…