【Python笔记:Pandas查询手册】


Alt

DataFrame创建

DataFrame的创建有几种方式

import numpy as np
from pandas import Series,DataFrame
import pandas as pd

# 1.二维数组创建,自动生成行索引和列索引
DataFrame(np.arange(10).reshape(2,5))

# ====结果====
0	1	2	3	4
0	0	1	2	3	4
1	5	6	7	8	9
# 2.字典创建,注意字典的数据格式:字典的值是数组、列表或元组
data = {
    'name':['张三', '李四', '王五', '小明'],
    'sex':['female', 'female', 'male', 'male'],
    'year':[2001, 2001, 2003, 2002],
    'city':['北京', '上海', '广州', '北京']
}
df = DataFrame(data)
df    #注意生成的DataFrame的列索引和原始字典中键、值的关系

#====结果====
	name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
3	小明	male	2002	北京
# 3.嵌套字典创建
data2 = {
    'sex':{'张三':'female','李四':'female','王五':'male'},
    'city':{'张三':'北京','李四':'上海','王五':'广州'}
}
df2 = DataFrame(data2)
df2

#====结果====
	sex	city
张三	female	北京
李四	female	上海
王五	male	广州

Dataframe索引

#指定列索引顺序
df = DataFrame(data, columns=['name', 'sex', 'year', 'city'])  
df
#====结果====
name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
3	小明	male	2002	北京
#指定行索引和列索引
df = DataFrame(data, columns=['name', 'sex', 'year', 'city'],index=['a', 'b', 'c', 'd'])  
df
#====结果====
	name	sex	year	city
a	张三	female	2001	北京
b	李四	female	2001	上海
c	王五	male	2003	广州
d	小明	male	2002	北京

Dataframe表头起名

df.index.name = 'id'
df.columns.name = 'std_info'

df
#====结果====
std_info	name	sex	year	city
id				
a	张三	female	2001	北京
b	李四	female	2001	上海
c	王五	male	2003	广州
d	小明	male	2002	北京

Dataframe属性

# 1.DataFrame的数据转换为二维数组
df.values
#====结果====
array([['张三', 'female', 2001, '北京'],
       ['李四', 'female', 2001, '上海'],
       ['王五', 'male', 2003, '广州'],
       ['小明', 'male', 2002, '北京']], dtype=object)
# 2.DataFrame表的行索引、列索引
df.index
df.columns
#====结果====
Index(['a', 'b', 'c', 'd'], dtype='object')
Index(['name', 'sex', 'year', 'city'], dtype='object')

DataFrame索引

索引对象

索引对象Index无法修改,但可以进行遍历

obj = Series([1, -2, 3, -4], index=['a', 'b', 'c', 'd'])
obj
#====结果====
a    1
b   -2
c    3
d   -4
dtype: int64

# 1.索引对象不可以修改
index = obj.index
index[1] = 'f'
#====结果====
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-4f995da5e969> in <module>()
      1 index = obj.index
----> 2 index[1] = 'f'

F:\Anaconda\envs\data-analysis\lib\site-packages\pandas\core\indexes\base.py in __setitem__(self, key, value)
   1668 
   1669     def __setitem__(self, key, value):
-> 1670         raise TypeError("Index does not support mutable operations")
   1671 
   1672     def __getitem__(self, key):

TypeError: Index does not support mutable operations
# 2.索引对象可以索引
index[1]
#====结果====
'b'
# 3.索引对象也是一个集合,因此也可以用in操作符
'sex' in df.columns
'f' in df.index
#====结果====
True
False

Pandas索引操作

重新索引

df.reindex():可以对行、列重新排序,也可以增加删除行、列
注意:reindex() 方法不会改变原来的df结构

obj = Series([1, -2, 3, -4], index=['b', 'a', 'c', 'd'])

# 1.重新索引就是重新排序,自动补齐
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])#默认不填充
obj2

#====结果====
a   -2.0
b    1.0
c    3.0
d   -4.0
e    NaN
dtype: float64
obj = Series([1, -2, 3, -4], index=[0,2,3,5])
# 2.method参数指定缺失值填充方式
obj2 = obj.reindex(range(6),method='ffill')#用前面的值填充
obj3 = obj.reindex(range(6),method='bfill')#用后面的值填充
obj2
obj3

#====结果====
0    1
1    1
2   -2
3    3
4    3
5   -4
dtype: int64

0    1
1   -2
2   -2
3    3
4   -4
5   -4
dtype: int64
#fill_value指定缺失值填充的值
df3 = df2.reindex(columns=['name', 'year', 'id'], fill_value=0)
df3
#====结果====
#删去了sex属性,增添了year属性,填充为0

name	year	id
a	0.0	0	1.0
b	NaN	0	NaN
c	3.0	0	4.0
d	6.0	0	7.0

更换索引

  1. set_index()将列数据作为行索引
  2. reset_index()将索引作为数据列,与set_index()方法相反
data = {
    'name':['张三', '李四', '王五', '小明'],
    'sex':['female', 'female', 'male', 'male'],
    'year':[2001, 2001, 2003, 2002],
    'city':['北京', '上海', '广州', '北京']
}
df = DataFrame(data)
df  
#====结果====
name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
3	小明	male	2002	北京
df2 = df.set_index('name')   #注意,不改变df
df2

#====结果====
	sex	year	city
name			
张三	female	2001	北京
李四	female	2001	上海
王五	male	2003	广州
小明	male	2002	北京
df3 = df2.reset_index()  #也不改变df2
df3

#====结果====
name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
3	小明	male	2002	北京
  1. df.sort_values(by=’ ')
    sort_value方法排序不改变原DataFrame,并且索引不会排序,跟着行一块动,即:索引与行绑定。(除非重新赋予新的df)
data = {
    'name':['张三', '李四', '王五', '小明'],
    'grade':[68, 78, 63, 92]
}
df = DataFrame(data)
df
#====结果====
 	name	grade
0	张三	     68
1	李四	     78
2	王五	     63
3	小明	     92

# sort_value方法排序不改变原DataFrame,排序之后索引会改变,与Excel不同
df2 = df.sort_values(by='grade')
df2
#====结果====
 
   name	grade
2	王五	  63
0	张三   68
1	李四	  78
3	小明	  92
#reset_index之后,原来的列索引被添加为一列,用drop=True去除原索引
df3 = df2.reset_index()  
df3

#====结果====
  index	 grade	name
0	2	 63	  王五
1	0	 68	  张三
2	1	 78	  李四
3	3	 92	  小明


df4 = df2.reset_index(drop=True)
df4
#====结果====
  grade	name
0	63	王五
1	68	张三
2	78	李四
3	92	小明

索引和选取

Series结构索引切片
obj = Series([1, -2, 3, -4], index=['a', 'b', 'c', 'd'])
# 1.可以通过0~(n-1)索引
obj[1]  
#====结果====
-2
# 2.也可以通过设置的索引标签来索引
obj['b']  
obj[['a','c']]
#====结果====
-2
# 3.切片
obj[0:2]
obj['a':'c']  #利用索引标签索引时,尾端是被包含的
#====结果====
a    1
b   -2
dtype: int64

a    1
b   -2
c    3
dtype: int64

DataFrame的行和列选取都有具体的方法

1. 选取列:列索引标签或属性形式
data = {
    'name':['张三', '李四', '王五', '小明'],
    'sex':['female', 'female', 'male', 'male'],
    'year':[2001, 2001, 2003, 2002],
    'city':['北京', '上海', '广州', '北京']
}
df = DataFrame(data)
df
#====结果====
	name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
3	小明	male	2002	北京
# 1.取一列
df['city']  #以列索引标签形式,返回Series结构
df.city   #以属性方式,,返回Series结构
df[['city']] #返回DataFrame结构

#====结果====
0    北京
1    上海
2    广州
3    北京
Name: city, dtype: object

0    北京
1    上海
2    广州
3    北京
Name: city, dtype: object

    city
0	北京
1	上海
2	广州
3	北京
df[['city','sex']]

#====结果====
	city	sex
0	北京	  female
1	上海	  female
2	广州	   male
3	北京	   male

直接选取列时不能使用切片,也没有位置

# df选取多列,不能使用切片!!
df[['sex':'city']]
# df['sex':'city']也不行

#====结果====
File "<ipython-input-56-d6386b7eaceb>", line 1
    df[['sex':'city']]
             ^
SyntaxError: invalid syntax
2. 选取行:行位置或行索引标签(loc()或iloc()方法)

df[2] 会报错,应该使用 df[2:3] 或 df.iloc[2] 来取出第2行,返回Series结构。
以索引位置方式,注意,必须“切片”

#选取行,切片
df.iloc[:3]
#同等于df[:3]
#df[2]会报错,应该使用df[2:3]或df.iloc[2}来取出第2行

#====结果====
name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
df2['李四':'小明']  #以行索引标签方式

#====结果====
	sex	year	city
name			
李四	female	2001	上海
王五	male	2003	广州
小明	male	2002	北京
  • 不用loc或iloc,选取行时必须用“切片”方式,选取列时不能使用“切片”。
  • 选取行:行位置或行索引标签(loc()或iloc()方法)
  • loc和iloc可以切片,也可以不切片。loc: locat, iloc:i-integer
  • loc取行数据,不用指定列
df2
#====结果====
     sex	year	city
name			
张三	female	2001	北京
李四	female	2001	上海
王五	male	2003	广州
小明	male	2002	北京

#按行索引标签选取数据。注意,不能使用df2['张三']
df2.loc['张三']   

#====结果====(Series结构)
sex     female
year      2001
city        北京
Name: 张三, dtype: object

df2.loc[['张三']]  #两对[],里面的[]有“组合”的含义

#====结果====(df结构)
	 sex	year	city
name			
张三	female	2001	北京
df2.loc[['张三','王五']]  #“张三”和“王五”的组合

#====结果====(df结构)
	 sex	year	city
name			
张三	female	2001	北京
王五	male	2003	广州
df2.loc[['张三':'王五']]  #出错,不能用切片来“组合”
# 应该使用 df2.loc['张三':'王五'],包含尾端

#====结果====
 File "<ipython-input-153-e34357cebaa9>", line 1
    df2.loc[['张三':'王五']]  #出错,不能用切片来“组合”
                 ^
SyntaxError: invalid syntax
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录: 01 教程.png 01.01 2.x与3.x版本区别.png 02 基础语法.png 02.01 命令行参数.png 03 基本数据类型.png 03.01 数据类型转换 int() 函数.png 03.02 数据类型转换 float() 函数.png 03.03 数据类型转换 complex() 函数.png 03.04 数据类型转换 str() 函数.png 03.05 数据类型转换 repr() 函数.png 03.06 数据类型转换 eval() 函数.png 03.07 数据类型转换 tuple 函数.png 03.08 数据类型转换 list()方法.png 03.09 数据类型转换 set() 函数.png 03.10 数据类型转换 dict() 函数.png 03.11 数据类型转换 frozenset() 函数.png 03.12 数据类型转换 chr() 函数.png 03.13 数据类型转换 ord() 函数.png 03.14 数据类型转换 hex() 函数.png 03.15 数据类型转换 oct() 函数.png 04 解释器.png 05 注释.png 06 运算符.png 07 数字(Number).png 07.01 数学函数 abs() 函数.png 07.02 数学函数 ceil() 函数.png 07.03 数学函数 exp() 函数.png 07.04 数学函数 fabs() 函数.png 07.05 数学函数 floor() 函数.png 07.06 数学函数 log() 函数.png 07.07 数学函数 log10() 函数.png 07.08 数学函数 max() 函数.png 07.09 数学函数 min() 函数.png 07.10 数学函数 modf() 函数.png 07.11 数学函数 pow() 函数.png 07.12 数学函数 round() 函数.png 07.13 数学函数 sqrt() 函数.png 07.14 随机数函数 choice() 函数.png 07.15 随机数函数 randrange() 函数.png 07.16 随机数函数 random() 函数.png 07.17 随机数函数 seed() 函数.png 07.18 随机数函数 shuffle() 函数.png 07.19 随机数函数 uniform() 函数.png 07.20 三角函数 acos() 函数.png 07.21 三角函数 asin() 函数.png 07.22 三角函数 atan() 函数.png 07.23 三角函数 atan2() 函数.png 07.24 三角函数 cos() 函数.png 07.25 三角函数 hypot() 函数.png 07.26 三角函数 sin() 函数.png 07.27 三角函数 tan() 函数.png 07.28 三角函数 degrees() 函数.png 07.29 三角函数 radians() 函数.png 08 字符串.png 08.01 字符串内建函数 capitalize()方法.png 08.02 字符串内建函数 center()方法.png 08.03 字符串内建函数 count()方法.png 08.04 字符串内建函数 bytes.decode()方法.png 08.05 字符串内建函数 encode()方法.png 08.06 字符串内建函数 endswith()方法.png 08.07 字符串内建函数 expandtabs()方法.png 08.08 字符串内建函数 find()方法.png 08.09 字符串内建函数 index()方法.png 08.10 字符串内建函数 isalnum()方法.png 08.11 字符串内建函数 isalpha()方法.png 08.12 字符串内建函数 isdigit()方法.png 08.13 字符串内建函数 islower()方法.png 08.14 字符串内建函数 isnumeric()方法.png 08.15 字符串内建函数 isspace()方法.png 08.16 字符串内建函数 istitle()方法.png 08.17 字符串内建函数 isupper()方法.png 08.18 字符串内建函数 join()方法.png 08.19 字符串内建函数 len()方法.png 08.20 字符串内建函数 ljust()方法.png 08.21 字符串内建函数 lower()方法.png 08.22 字符串内建函数 lstrip()方法.png 08.23 字符串内建函数 maketrans()方法.png 08.24 字符串内建函数 max()方法.png 08.25 字符串内建函数 min()方法.png 08.26 字符串内建函数 replace()方法.png 08.27 字符串内建函数 rfind()方法.png 08.28 字符串内建函数 rindex()方法.png 08.29 字符串内建函数 rjust()方法.png 08.30 字符串内建函数 rstrip()方法.png 08.31 字符串内建函数 split()方法.png 08.32 字符串内建函数 splitlines()方法.png 08.33 字符串内建函数 startswith()方法.png 08.34 字符串内建函数 strip()方法.png 08.35 字符串内建函数 swapcase()方法.png 08.36 字符串内建函数 title()方法.png 08.37 字符串内建函数 translate()方法.png 08.38 字符串内建函数 upper()方法.png 08.39 字符串内建函数 zfill()方法.png 08.40 字符串内建函数 isdecimal()方法.png 09 列表.png 09.01 列表函数 List len()方法.png 09.02 列表函数 List max()方法.png 09.03 列表函数 List min()方法.png 09.04 列表函数 List list()方法.png 09.05 列表方法 List append()方法.png 09.06 列表方法 List count()方法.png 09.07 列表方法 List extend()方法.png 09.08 列表方法 List index()方法.png 09.09 列表方法 List insert()方法.png 09.10 列表方法 List pop()方法.png 09.11 列表方法 List remove()方法.png 09.12 列表方法 List reverse()方法.png 09.13 列表方法 List sort()方法.png 09.14 列表方法 List clear()方法.png 09.15 列表方法 List copy()方法.png 10 元组.png 11 字典.png 11.01 字典 clear()方法.png 11.02 字典 copy()方法.png 11.02.01 直接赋值、浅拷贝和深度拷贝解析.png 11.03 字典 fromkeys()方法.png 11.04 字典 get() 方法.png 11.05 字典 in 操作符.png 11.06 字典 items() 方法.png 11.07 字典 keys() 方法.png 11.08 字典 setdefault() 方法.png 11.09 字典 update() 方法.png 11.10 字典 values() 方法.png 11.11 字典 pop() 方法.png 11.12 字典 popitem() 方法.png 12 编程第一步.png 13 条件控制.png 14 循环语句.png 15 迭代器与生成器.png 16 函数.png 17 数据结构.png 18 模块.png 19 输入和输出.png 20 File 方法.png 20.01 File close() 方法.png 20.02 File flush() 方法.png 20.03 File fileno() 方法.png 20.04 File isatty() 方法.png 20.05 File next() 方法.png 20.06 File read() 方法.png 20.07 File readline() 方法.png 20.08 File readlines() 方法.png 20.09 File seek() 方法.png 20.10 File tell() 方法.png 20.11 File truncate() 方法.png 20.12 File write() 方法.png 20.13 File writelines() 方法.png 21 OS 文件_目录方法.png 21.01 os.access() 方法.png 21.02 os.chdir() 方法.png 21.03 os.chflags() 方法.png 21.04 os.chmod() 方法.png 21.05 os.chown() 方法.png 21.06 os.chroot() 方法.png 21.07 os.close() 方法.png 21.08 os.closerange() 方法.png 21.09 os.dup() 方法.png 21.10 os.dup2() 方法.png 21.11 os.fchdir() 方法.png 21.12 os.fchmod() 方法.png 21.13 os.fchown() 方法.png 21.14 os.fdatasync() 方法.png 21.15 os.fdopen() 方法.png 21.16 os.fpathconf() 方法.png 21.17 os.fstat() 方法.png 21.18 os.fstatvfs() 方法.png 21.19 os.fsync() 方法.png 21.20 os.ftruncate() 方法.png 21.21 os.getcwd() 方法.png 21.22 os.getcwdu() 方法.png 21.23 os.isatty() 方法.png 21.24 os.lchflags() 方法.png 21.25 os.lchmod() 方法.png 21.26 os.lchown() 方法.png 21.27 os.link() 方法.png 21.28 os.listdir() 方法.png 21.29 os.lseek() 方法.png 21.30 os.lstat() 方法.png 21.31 os.major() 方法.png 21.32 os.makedev() 方法.png 21.33 os.makedirs() 方法.png 21.34 os.minor() 方法.png 21.35 os.mkdir() 方法.png 21.36 os.mkfifo() 方法.png 21.37 os.mknod() 方法.png 21.38 os.open() 方法.png 21.39 os.openpty() 方法.png 21.40 os.pathconf() 方法.png 21.41 os.pipe() 方法.png 21.42 os.popen() 方法.png 21.43 os.read() 方法.png 21.44 os.readlink() 方法.png 21.45 os.remove() 方法.png 21.46 os.removedirs() 方法.png 21.47 os.rename() 方法.png 21.48 os.renames() 方法.png 21.49 os.rmdir() 方法.png 21.50 os.stat() 方法.png 21.51 os.stat_float_times() 方法.png 21.52 os.statvfs() 方法.png 21.53 os.symlink() 方法.png 21.54 os.tcgetpgrp() 方法.png 21.55 os.tcsetpgrp() 方法.png 21.56 os.ttyname() 方法.png 21.57 os.unlink() 方法.png 21.58 os.utime() 方法.png 21.59 os.walk() 方法.png 21.60 os.write() 方法.png 22 错误和异常.png 23 面向对象.png 24 标准库概览.png 25 实例.png 25.01 Hello World 实例.png 25.02 数字求和.png 25.03 平方根.png 25.04 二次方程.png 25.05 计算三角形的面积.png 25.06 随机数生成.png 25.07 摄氏温度转华氏温度.png 25.08 交换变量.png 25.09 if 语句.png 25.10 判断字符串是否为数字.png 25.11 判断奇数偶数.png 25.12 判断闰年.png 25.13 获取最大值函数.png 25.14 质数判断.png 25.15 输出指定范围内的素数.png 25.16 阶乘实例.png 25.17 九九乘法表.png 25.18 斐波那契数列.png 25.19 阿姆斯特朗数.png 25.20 十进制转二进制、八进制、十六进制.png 25.21 ASCII码与字符相互转换.png 25.22 最大公约数算法.png 25.23 最小公倍数算法.png 25.24 简单计算器实现.png 25.25 生成日历.png 25.26 使用递归斐波那契数列.png 25.27 文件 IO.png 25.28 字符串判断.png 25.29 字符串大小写转换.png 25.30 计算每个月天数.png 25.31 获取昨天日期.png 25.32 list 常用操作.png 26 正则表达式.png 27 CGI编程.png 28 MySQL 数据库连接.png 29 网络编程.png 30 SMTP发送邮件.png 31 多线程.png 32 XML解析.png 33 JSON 数据解析.png 34 日期和时间.png 34.01 time clock()方法.png 34.02 time mktime()方法.png 34.03 time tzset()方法.png 35 内置函数.png 35.01 abs() 函数.png 35.02 all() 函数.png 35.03 any() 函数.png 35.04 ascii() 函数.png 35.05 bin() 函数.png 35.06 bool() 函数.png 35.07 bytearray() 函数.png 35.08 bytes 函数.png 35.09 callable() 函数.png 35.10 chr() 函数.png 35.11 classmethod 修饰符.png 35.12 compile() 函数.png 35.13 complex() 函数.png 35.14 delattr() 函数.png 35.15 dict() 函数.png 35.16 dir() 函数.png 35.17 divmod() 函数.png 35.18 enumerate() 函数.png 35.19 eval() 函数.png 35.20 exec 函数.png 35.21 filter() 函数.png 35.22 float() 函数.png 35.23 format 格式化函数.png 35.24 frozenset() 函数.png 35.25 getattr() 函数.png 35.26 globals() 函数.png 35.27 hasattr() 函数.png 35.28 hash() 函数.png 35.29 help() 函数.png 35.30 hex() 函数.png 35.31 id() 函数.png 35.32 input() 函数.png 35.33 int() 函数.png 35.34 isinstance() 函数.png 35.35 issubclass() 函数.png 35.36 iter() 函数.png 35.37 len()方法.png 35.38 list()方法.png 35.39 locals() 函数.png 35.40 map() 函数.png 35.41 max() 函数.png 35.42 memoryview() 函数.png 35.43 min() 函数.png 35.44 next() 函数.png 35.45 oct() 函数.png 35.46 open() 函数.png 35.47 ord() 函数.png 35.48 pow() 函数.png 35.49 print() 函数.png 35.50 property() 函数.png 35.51 range() 函数用法.png 35.52 repr() 函数.png 35.53 reversed 函数.png 35.54 round() 函数.png 35.55 set() 函数.png 35.56 setattr() 函数.png 35.57 slice() 函数.png 35.58 sorted() 函数.png 35.59 staticmethod() 函数.png 35.60 str() 函数.png 35.61 sum() 函数.png 35.62 super() 函数.png 35.63 tuple 函数.png 35.64 type() 函数.png 35.65 vars() 函数.png 35.66 zip() 函数.png 35.67 __import__() 函数.png

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值