目录
pandas数据读写操作(专栏:python数据分析和可视化)
如果使用了 index 中不包含的标签,则会触发异常:KeyError
isnull():如果为值不存在或者缺失,则返回 True.
notnull():如果值不存在或者缺失,则返回 False。
1、内置数据结构:Series与DataFrame
- 数据导入导出
- 数据抽取以及增删查改操作
- 数据清洗
- 数据排名、计算、格式化
- 数据统计与合并
2、推荐学习资源:
pandas数据读写操作:(专栏:python数据分析和可视化)
Pandas数据读写操作_抱抱宝的博客-CSDN博客_pandas写数据
教程:
Pandas教程(非常详细)_小熊coder的博客-CSDN博客_pandas 教程
Pandas 中文网:快速入门 | Pandas 中文 (pypandas.cn)
C语言中文网:Pandas是什么 (biancheng.net)
3、Series对象
一种类似于一维数组的对象由一组 数据以及一组与之相关的数据 标签(即索引)组成可以存储任何类型的数据
A、用Series()创建对象
import pandas as pd
# 它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。
# s = pd.Series(data, index, dtype, copy=False)
'''
data 输入的数据,可以是列表、常量、ndarray 数组等。
index 索引值必须是惟一的,如果没有传递索引,则默认为 np.arrange(n)。
dtype dtype表示数据类型,如果没有提供,则会自动判断得出。
copy 表示对 data 进行拷贝,默认为 False。
'''
# 创建一个空Series对象
# 输入数据为空
s = pd.Series() # Series([], dtype: float64)
print(s)
1、用nadrray创建
隐式索引
# ndarray创建Series对象
import pandas as pd
import numpy as np
data = np.array(['a', 'b', 'c','d'])
# 没传入索引,默认从零开始 -->隐式索引
s = pd.Series(data)
print(s)
显示索引
# 显示索引
import pandas as pd
import numpy as np
data = np.array(['a', 'b', 'c','d'])
s = pd.Series(data, index=[520,521,522,523])
print(s)
2、用字典创建
# dict创建Series对象
import pandas as pd
data = {'a' :0,'b' :1,'c' :2,'d' :3}
# data2 = {'a' :0.,'b' :1,'c' :2,'d' :3.}
s = pd.Series(data)
print(s)
'''
a 0
b 1
c 2
d 3
dtype: int64
'''
当传递的索引值无法找到与其对应的值时,使用 NaN(非数字)填充。
3、标量创建
# 标量创建Series对象
import pandas as pd
# 必须提供索引
# 标量值按照 index 的数量进行重复
s = pd.Series(5, index=[0,1,2,3])
print(s)
输出:
0 5
1 5
2 5
3 5
dtype: int64
B、访问
位置索引访问
索引标签访问
切片访问
如果使用了 index 中不包含的标签,则会触发异常:KeyError
''' 位置索引访问 ''' import pandas as pd s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e']) print(s[0]) #位置下标 print(s['a']) #标签下标 print('\n') # 通过切片访问 print(s[:3]) # 获取最后三个元素 print(s[-3:])
''' 索引标签访问 Series 类似于固定大小的 dict,把 index 中的索引标签当做 key, 而把 Series 序列中的元素值当做 value,然后通过 index 索引标签来访问或者修改元素值。 ''' import pandas as pd s = pd.Series([100,7,8,9,10],index = ['a','b','c','d','e']) print(s['a']) print('\n') print(s) print('\n') print(s[['a','c','d']])
''' 如果使用了 index 中不包含的标签,则会触发异常: ''' import pandas as pd s = pd.Series([6,7,8,9,10],index = ['a','b','c','d','e']) #不包含f值 print(s['f']) # KeyError: 'f'
C、常用属性
axes 以列表的形式返回所有’行’索引标签。
dtype 返回对象的数据类型。
empty 返回一个空的 Series 对象。
ndim 返回输入数据的维数。
size 返回输入数据的元素数量。
values 以 ndarray 的形式返回 Series 对象。
index 返回一个RangeIndex对象,用来描述索引的取值范围。
D、常用方法:
1.head()&tail()查看数据
head() 返回前 n 行数据,默认显示前 5 行数据。
tail() 返回的是后 n 行数据,默认为后 5 行。
import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(5))
print (s)
#返回前三行数据
print (s.head(3))
print(s.tail(3))
2、isnull()& nonull()检测缺失值
isnull():如果为值不存在或者缺失,则返回 True.
notnull():如果值不存在或者缺失,则返回 False。
4、DataFrame对象
A、创建
DataFrame 一个表格型的数据结构, 既有行标签(index),又有列标签(columns), 它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。
1)创建DataFrame空对象
import pandas as pd
# pd.DataFrame( data, index, columns, dtype, copy)
df = pd.DataFrame()
print(df) # 行标签(index),又有列标签(columns),
Empty DataFrame
Columns: []
Index: []
2)列表创建DataFame对象
可以使用嵌套列表创建
3)字典嵌套列表创建
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
# df = pd.DataFrame(data)
df = pd.DataFrame(data, index=['001','002','003','004'])
print(df)
Name Age
001 Tom 28
002 Jack 34
003 Steve 29
004 Ricky 42
4) 列表嵌套字典创建DataFrame对象
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print(df)
a b c
0 1 2 NaN
1 5 10 20.0
B、常用属性和方法汇总
名称 | 属性&方法描述 |
---|---|
T | 行和列转置。 |
axes | 返回一个仅以行轴标签和列轴标签为成员的列表。 |
dtypes | 返回每列数据的数据类型。 |
empty | DataFrame中没有数据或者任意坐标轴的长度为0,则返回True。 |
ndim | 轴的数量,也指数组的维数。 |
shape | 返回一个元组,表示了 DataFrame 维度。 |
size | DataFrame中的元素数量。 |
values | 使用 numpy 数组表示 DataFrame 中的元素值。 |
名称 | 函数描述 |
head() |
返回前 n 行数据
|
tail() |
返回后 n 行数据
|
describe() | 查看每一列的汇总信息,产生多个汇总统计 |
count() |
统计每一列非NaN的数量
|
sum() | 返回每一列的和,Series类型 |
mean() |
返回每一列的平均值,Series类型
|
median() |
返回每一列的中位数,Series类型
|
min() | 返回每一列的最小值 |
max() |
返回每一列的最大值
|