pandas的使用方法
一、基本使用方法
# pandas引入约定
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
import matplotlib.pyplot as plt # pandas数据结构
# pandas数据结构介绍
# Series:一种类似于一维数组的对象,它是由一组数据(各种numpy数据类型)
# 以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生简单的series
# DataFrame:一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型
# (数值,字符串,布尔值等),dataframe即有行索引也有列索引,可以被看做是由series组成的字典 arr=np.arange(20)
# 建立一个一维的数组对象
series=Series(arr)
print(series) # 查看索引
print(series.index)
# RangeIndex(start=0, stop=20, step=1)
# 数据index绑定
series01=Series([98,56,88,45],index=['语文','数学','英文','体育'])
print(series01)
print(series01.index)
print(series01.values) # numpy中的数组运算,在series中都保留使用,并且series进行数组运算时,索引与值之间的映射关系不会改变 # series缺失值检测
# pandas中的isnull和notnull函数可用于series缺失值检测
# isnull和notnull都返回一个布尔类型的series
series2=Series([1,2,3,4,np.nan,5,6,7,8,9])
print(series2)
# 检测是否为空
print(series2.isnull())
# 检测是否不为空
print(series2.notnull()) # series自动对齐
# 不同series之间进行算术运算,会自动对齐不同索引的数据
# index之间会自动对应
num=Series([23,45,67,89],index=['p3','p1','p2','p5'])
print(num)
price=Series([9.98,2.34,4.56,5.67,8.78],index=['p1','p2','p3','p4','p5'])
print(num*price) # series及其索引的name属性
# series对象本身及其索引都有一个name属性,可赋值设置,就是取别名
num.name='PrductName'
num.index.name='PrductType'
print(num) # pandas的数据导出与导入
print(pd.read_csv('ex1.csv'))
print(pd.read_table('ex1.csv',sep=',')) # 设置header=none,列名称就以数字为列名称
print(pd.read_csv('ex2.csv',header=None))
print(pd.read_csv('ex2.csv',header=None,names=('a1','a2','a3','a4','a5')))
# 指定行索引
print(pd.read_csv('ex2.csv',header=None,names=('a1','a2','a3','a4','a5'),index_col='a5'))
# 指定多个行索引
print(pd.read_csv('ex2.csv',header=None,names=('a1','a2','a3','a4','a5'),index_col=['a5','a1'])) print(pd.read_csv('ex3.csv'))
# 加了sep会把第一列作为行索引
print(pd.read_table('ex3.csv',sep='\s+')) # 缺失值的处理
print(pd.read_csv('ex5.csv'))
# 指定设置缺失值
print(pd.read_csv('ex5.csv',na_values={'message':['world','foo'],'d':['']})) # 读取大量数据的处理
# 先读取10行数据
print(pd.read_csv('ex6.csv',nrows=10))
# 利用迭代功能来读取大量数据
tr=pd.read_csv('ex6.csv',chunksize=1000)
# tr是一个迭代器
print(tr)
result=pd.Series([])
for chunk in tr:
# 先统计每个相同key的个数,
result=result.add(chunk['key'].value_counts(),fill_value=0)
print(result)
result=result.sort_values(ascending=False)
print(result[:10]) # 写入数据
df=pd.read_csv('ex5.csv')
# 会把读出来自己增加的行索引也写入文件
# df.to_csv('ex5_out.csv')
# 导致再次读出来的时候,会多了一列无用索引
# print(pd.read_csv('ex5_out.csv'))
# 可以指定写入不把索引号写入
# df.to_csv('ex5_out.csv',index=False)
# print(pd.read_csv('ex5_out.csv'))
# 指定其他参数的写入
print(df.to_csv('ex5_out.csv',index=False,header=None,columns=['b','c','message']))
print(pd.read_csv('ex5_out.csv')) # 索引对象
# 不管是series对象还是dataframe对象,都有索引对象
# 索引对象负责管理标签和其他元数据(比如轴名称等)
# 通过索引可以从series,dataframe中取值或对某个位置的值重新赋值
# series或者dataframe自动化对齐功能就是通过索引进行的 # 通过索引从dataframe中取值
# 可以直接通过列索引获取指定列的数据
# 要通过行索引获取指定行数据需要ix方法 # dataframe
# 通过二维数组创建dataframe
# 通过字典的方式创建dataframe
# 索引对象 # 2行索引,3列索引
df01=DataFrame([['tom','maerry','john'],[76,98,100]])
print(df01)
# 3行索引,2列索引
df02=DataFrame([['tom',76],['merry',98],['john','']])
print(df02) df=DataFrame([[1,2,3],[2,3,4]],index=['a','b'])
print(df)
# 按照列取值
print(df[0])
print(df[0]['a'])
# 按照行取值
print(df[:1])
print(df[:1][2]) data={'apart':['','','',''],
'profits':[567.87,987.87,873,498.87],
'year':[2001,2001,2001,2000]}
df=DataFrame(data)
print(df)
# apart profits yearx
# 0 1001 567.87 2001
# 1 1002 987.87 2001
# 2 1003 873.00 2001
# 3 1001 498.87 2000
print(df.index)
# RangeIndex(start=0, stop=4, step=1)
print(df.columns)
# Index(['apart', 'profits', 'year'], dtype='object')
print(df.values)
# [['1001' 567.87 2001]
# ['1002' 987.87 2001]
# ['1003' 873.0 2001]
# ['1001' 498.87 2000]] # pandas基本功能
# 重新索引
# 丢弃指定轴上的项
# 索引,选取和过滤
# 算术运算和数据对齐
# 函数应用和映射
# 排序和排名
# 带有重复值的轴索引
df=DataFrame([[50,20,10],
[50,30,20],
[20,40,30],],
index=['c','j','p'],
columns=['c++','java','python'])
print(df)
# c++ java python
# c 50 20 10
# j 50 30 20
# p 20 40 30
df.index=[1,2,3]
print(df)
df.columns=['c++编译型语言','Java解释型语言','python解释型语言']
print(df) n1=np.random.random((20,6))
print(n1)
s2=DataFrame(n1)
print(s2)
# 默认前五行
print(s2.head())
# 默认后五行
print(s2.tail())
# 行的快速统计汇总,得到数据的规模,大致范围
print(s2.describe())
# 行与列的转置
print(s2.T)
print(s2.T.describe())
# 按轴排序,axis=1代表列轴 0为行轴,ascending=False降排序,默认为True升序
print(s2.sort_index(axis=1,ascending=False))
# 按值排序
print(s2)
# 依据第2列的数据进行升序排列by=[]可以添加多列名称
print(s2.sort_values(by=[2]))
# 依据第0行的升序排序
print(s2.sort_values(by=[0],axis=1)) # 通过传递数值进行位置选择(选择的是行)
print(s2.iloc[0])#[0]代表索引第0行
# 通过数值进行切片
# 取第0行到5行
print(s2.iloc[0:5,])
# 取第0索引行到4索引行中的第2索引行到第3索引行,顾头不顾尾
print(s2.iloc[0:5,][2:4])
# 取第0索引行到4索引行中的第2索引列到第3索引列
print(s2.iloc[0:5,2:4]) print(s2.iloc[2,2])
print(s2.iat[2,2]) # 布尔索引
# 整体过滤,获取所有大于0.5的值,小于的用NAN表示
print(s2[s2>0.5])
print(s2[1])
# 大于5的为True,小于5的为False
print(s2[1]>0.5) # isin()过滤数据
s2.iloc[0,0]=1.2
print(s2)
print(s2[s2[0].isin([1.2])]) # 缺失值的处理
# reindex()方法可以对指定轴上的索引进行修改(增加/删除)
s3=s2.reindex(index=[i for i in range(11)]
,columns=list(s2.columns)+[0])
print(s3)
s3.iloc[1,1]=np.nan
print(s3)
# 删除缺失值的行
# print(s3.dropna(how='any'))
# 将缺失值设置为0
print(s3.fillna(0))
# 数据描述性统计
print(s3.mean()) # 制图
# 直方图
n1=np.random.randint(0,7,size=10)
print(n1)
s1=pd.Series(n1)
# 数据元素统计
print(s1.value_counts()) n1=np.random.randint(0,10,size=100)
df=Series(n1)
print(df.value_counts())
pandas的使用方法的更多相关文章
- pandas的Categorical方法
对于数据样本的标签,如果我们事先不知道这个样本有多少类别,那么可以对数据集的类别列进行统计,这时我们用pandas的Categorical方法就非常快的实现. 1.说明: 你的数据最好是一个serie ...
- python pandas dataframe to_sql方法error及其解决
今天遇到了一个问题,很是奇怪,自己也想了一个另类的方法将其解决了,现在将详细过程经过记录如下: 我在处理完一个dataframe之后,需要将其写回到数据库.这个dataframe比较大,共有53列,7 ...
- Python openpyxl、pandas操作Excel方法简介与具体实例
本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...
- pandas的qcut()方法
pandas的qcut可以把一组数字按大小区间进行分区,比如 data = pd.Series([0,8,1,5,3,7,2,6,10,4,9]) 比如我要把这组数据分成两部分,一半大的,一半小的,如 ...
- Pandas的loc方法
当你读取到DataFrame的数据时,想去定位某一个数据项,可以使用loc方法进行查找,之后你可以赋值给他. import pandas as pd df = pd.read_csv('file_na ...
- Pandas的append方法
相当于添加一行记录,这个方法也是比较管用的: # 测试pandas.append方法 def use_pd_append(): df = pd.DataFrame([[1, 2], [3, 4]], ...
- pandas 常用统计方法
统计方法 pandas 对象有一些统计方法.它们大部分都属于约简和汇总统计,用于从 Series 中提取单个值,或从 DataFrame 的行或列中提取一个 Series. 比如 DataFrame. ...
- 使用 Pandas 的 to_excel() 方法来将多个 csv 文件合并到一个 xlsx 的不同 sheets 内
这几天在用 Python3 研究一个爬虫,最后一个需求是把爬下来的20+个csv文件整合到一个excel表里的不同sheets. 初版的核心代码如下: while year <= 2018: c ...
- pandas属性和方法
Series对象的常用属性和方法 loc[ ]和iloc[ ]格式示例表 Pandas提供的数据整理方法 Pandas分组对象的属性和方法 date_range函数的常用freq参数表
随机推荐
- (c# )操作Excel的时候出现:不能使用对象或链接
可能就是你打开了多个Excel进程没有关掉出现的问题. 编程:对文件操作的时候要养成关掉进程的习惯 在c#中操作完后关闭资源的代入如下: System.Runtime.InteropServices. ...
- neo4j常用cypher语句
阅读更多 1.删除带有关系的节点 a.先删除关系 match (n:Node)-[r:关系名称]-() where (n...条件) delete r b.删除节点 match (n:Node ...
- MySQL 不用 Null 的理由
Null 貌似在哪里都是个头疼的问题,比如 Java 里让人头疼的 NullPointerException,为了避免猝不及防的空指针异常,千百年来程序猿们不得不在代码里小心翼翼的各种 if 判断,麻 ...
- el-dialog(点击左上角的关闭x)执行弹窗关闭之前的回调
绑定的事件: :before-close="handleDialogClose" html: <!-- 新增.编辑弹窗 --> <el-dialog :close ...
- 导出sheet到新文件夹当中
Sub 导出当前客户达成分析()Application.ScreenUpdating = FalsemyName1 = Sheets("日期统计表").Range("B1 ...
- c_ 数据结构_图_邻接矩阵
程序主要实现了图的深度遍历和广度遍历. #include <stdio.h> #include <stdlib.h> #include <string.h> #de ...
- flask 使用hashlib加密
flask 使用hashlib加密 import hashlib #引入hashlib #使用方法: password = ' sha1 = hashlib.sha1() #使用sha1加密方法,你还 ...
- 【JZOJ4474】【luoguP4071】排列计数
description 求有多少种长度为 n 的序列 A,满足以下条件: (1)1 ~ n 这 n 个数在序列中各出现了一次 (2)若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 ...
- Perl 基础语法
Perl 基础语法 Perl借用了C.sed.awk.shell脚本以及很多其他编程语言的特性,语法与这些语言有些类似,也有自己的特点. Perl 程序有声明与语句组成,程序自上而下执行,包含了循环, ...
- 牛客多校第六场 A Garbage 模拟/签到
题意: 给你一个字符串,代表一个垃圾都有哪些物质组成,再给你一个字符串,代表a-z代表的物质分别是有害物质,干物质还是湿物质,根据题目的定义,回答是什么垃圾. 题解: 根据题意模拟即可. #inclu ...