科学数据库(Pandas)——第二节 pandas之DataFrame
目录
DataFrame的创建
DataFrame基本操作
pandas之loc
pandas之iloc
pandas之布尔索引
缺失数据的处理
pandas常用统计方法
DataFrame的创建
方法一:向DataFrame传入数组
可以指定索引的名称:
方法二:通过字典传入DataFrame
DataFrame基本操作
#coding=utf-8
import pandas as pd
df = pd.read_csv("dogNames2.csv")
# print(df.head())
# print(df.info())#dataframe中排序的方法
df=df.sort_values(by="Count_AnimalName",ascending=False) #by指定需要排序的索引名称 ascending升序#Dataframe的索引和切片#--方括号写数字,表示对行进行操作
print(df[:20]) #取前20行记录#--方括号写字符串,表示对列进行操作
print(df[:20]["Row_Labels"])#先选取前20行记录,再选取Row_Labels标签对应的列
pandas之loc
df.loc 通过标签索引行数据
pandas之iloc
df.iloc 通过位置获取行数据
#loc与iloc的使用
import pandas as pd
import numpy as np
t1 = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("WXYZ"))
#可以通过赋值更改数据
t1.loc["a","Y"]=100
print(t1)
t1.iloc[1:2,0:2]=200 #这里的冒号”:“左闭右开,只能取到索引号是1行;0、1列的数据
print(t1)
输出结果:
pandas之布尔索引
#coding=utf-8
import pandas as pd
df = pd.read_csv("dogNames2.csv")
print(df[(80<df["Count_AnimalName"])&(df["Count_AnimalName"]<100)])
#打印狗的名字使用次数大于80小于100的狗名字列表
输出结果:
注意点(当出现两个及以上的条件时):
- 不同条件之间必须用“&”或者“|”符号连接起来
- 不同条件之间必须用括号括起来
#coding=utf-8
import pandas as pd
df = pd.read_csv("dogNames2.csv")
print(df["Row_Labels"].str.split("/").tolist())
#tolist可以将series转化成list
缺失数据的处理
判断数据是否为NaN:pd.isnull(df),pd.notnull(df)
In [37]: t1
Out[37]:W X Y Z
a 0.0 1.0 2 3
b NaN NaN 6 7
c 8.0 9.0 10 11In [38]: pd.isnull(t1)
Out[38]:W X Y Z
a False False False False
b True True False False
c False False False FalseIn [44]: t1[pd.notnull(t1["W"])] #根据W列不是nan的筛选数据
Out[44]:W X Y Z
a 0.0 1.0 2 3
c 8.0 9.0 10 11
处理方式1:删除NaN所在的行列dropna (axis=0, how='any', inplace=False)
In [46]: t1.dropna(axis=0) #删除nan所在的行
Out[46]:W X Y Z
a 0.0 1.0 2 3
c 8.0 9.0 10 11In [47]: t1.dropna(axis=0,how="all") #all表示删除全部是nan的行
Out[47]:W X Y Z
a 0.0 1.0 2 3
b NaN NaN 6 7
c 8.0 9.0 10 11In [48]: t1.dropna(axis=0,how="any",inplace=False) #any表示删除含有nan的行,默认情况下是any
Out[48]: #inplace=True表示原地替代,t1不用赋值也可以改变W X Y Z
a 0.0 1.0 2 3
c 8.0 9.0 10 11
处理方式2:填充数据,t.fillna()
#1、填充数字
In [49]: t1
Out[49]:W X Y Z
a 0.0 1.0 2 3
b NaN NaN 6 7
c 8.0 9.0 10 11In [51]: t1.fillna(10)
Out[51]:W X Y Z
a 0.0 1.0 2 3
b 10.0 10.0 6 7
c 8.0 9.0 10 11#2、填充均值
In [54]: t1.fillna(t1.mean())
Out[54]:W X Y Z
a 0.0 1.0 2 3
b 4.0 5.0 6 7
c 8.0 9.0 10 11#3、填充中位数
In [56]: t1.fillna(t1.median())
Out[56]:W X Y Z
a 0.0 1.0 2 3
b 4.0 5.0 6 7
c 8.0 9.0 10 11
pandas常用统计方法
练习1:假设现在我们有一组从2006年到2016年1000部最流行的电影数据,我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?
练习2:对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?
#统计runtime的分布情况
#coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt
file_path="MDB-Movie-Data.csv"
df=pd.read_csv(file_path)#rating,runtime的分布情况
#1、选择图形,分布情况——直方图
#准备数据
runtime_data=df["Runtime (Minutes)"].values
max_runtime=runtime_data.max()
min_runtime=runtime_data.min()
#计算组数
print((max_runtime-min_runtime))
num_bin=((max_runtime-min_runtime))//5
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.hist(runtime_data,num_bin)plt.xticks(range(min_runtime,max_runtime+5,5))
plt.show()
结果展示:
#统计rating的分布情况
#coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt
file_path="MDB-Movie-Data.csv"
df=pd.read_csv(file_path)rating_data=df["Rating"].values
max_rating=rating_data.max()
min_rating=rating_data.min()
#计算组数
print(max_rating)
print(min_rating)
#因为是不均匀分布,所以以列表的形式传入组数
_x=[min_rating]
i=min_rating #用while循环来添加_x列表里的元素
while i < max_rating+0.5:i = i+0.5_x.append(i)
# #设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.hist(rating_data,_x)
plt.xticks(_x) #设置X轴标签
plt.show()
结果展示:
科学数据库(Pandas)——第二节 pandas之DataFrame相关推荐
- 萌新向Python数据分析及数据挖掘 第二章 pandas 第一节 pandas使用基础QA 1-15
这是油管上的一个帅哥的网课地址如下 https://www.youtube.com/watch?v=yzIMircGU5I&list=PL5-da3qGB5ICCsgW1MxlZ0Hq8LL5 ...
- pandas 第二章 pandas基础
第二章 pandas基础 import numpy as np import pandas as pd import xlrd 在开始学习前,请保证pandas的版本号不低于如下所示的版本,否则请务必 ...
- 【Pandas总结】第二节 Pandas 的数据读取_pd.read_csv()的使用详解(非常全面,推荐收藏)
使用pandas进行数据读取,最常读取的数据格式如下: NO 数据类型 说明 使用方法 1 csv, tsv, txt 可以读取纯文本文件 pd.read_csv 2 excel 可以读取.xls . ...
- 萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks...
Python Language Basics, IPython, and Jupyter Notebooks In [5]: import numpy as np #导入numpy np.random ...
- c++控制台应用每一列数据如何对齐_Python数据分析第五节 pandas入门
这一节将开始学习python的一个核心数据分析支持库---pandas,它是python数据分析实践与实战的必备高级工具.对于使用 Python 进行数据分析来说,pandas 几乎是无人不知,无人不 ...
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均、例如,计算某公司的多个店铺每N天(5天)的滚动销售额指数权重移动(滚动)平均
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均(Exponential Moving Average).例如,计算某公司的多个店铺每N天(5 ...
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值 目录
- pandas使用dropna函数删除dataframe中全是缺失值的数据列(drop columns with all missing values in dataframe)
pandas使用dropna函数删除dataframe中全是缺失值的数据列(drop columns with all missing values in dataframe) 目录
- pandas使用nunique函数计算dataframe每个数据列的独特值的个数(count number of unique values in each column of dataframe)
pandas使用nunique函数计算dataframe每个数据列的独特值的个数(count number of unique values in each column of dataframe) ...
最新文章
- C++11 :STL中的 iota ()函数
- 深度报告:中国将主宰5G时代?华为中兴的最大机会来了
- shell中$后加引号有什么用($string和$'string')
- music算法_Elasticsearch系列---相关性评分算法及正排索引
- Java8 LinkedHashMap 源码阅读
- STL源码剖析---迭代器失效小结
- 什么是ACID理论(二阶段、三阶段提交、TCC)
- 如何抓取html请求,怎么获取请求头
- 使用nosetests对webpy程序做单元测试
- python时间库date和datetime
- hadoop streaming 按字段排序与输出分割详解
- 为了永不停机的计算服务 | 凌云时刻
- Excel单个单元格内逗号分割的字符串去重
- (转自博客园-雲霏霏)5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
- Windows 自动连接wifi的bat批处理脚本
- 读《微波工程(第三版)》笔记 (10:终端接负载的无耗传输线)
- A15处理器和m1哪个好
- 李元佳:漫谈 Greenplum 开源背后的动机
- 2019-12-03 Python3 作业 爬取豆瓣读书所有出版商信息
- 关于数据埋点的基础认识