自 pandas文档(https://pandas.pydata.org/docs/user_guide/10min.html)
这里只是一个简单的介绍,面向初学的小伙伴,如果想要学习更多的pandas知识点,请看文档当中的cookiebook部分,当然,后续也会进行翻译。
官方文档当中使用了numpy结合pandas使用,我们在举例子的过程当中,保留文档案例的同时采用一个新的案例,商品关系数据结构:
商品表:
id | 商品名称 | 商品价格 | 商品产地 | 商品上架时间 | 商品类型 |
---|---|---|---|---|---|
1 | 山东红富士 | 12.5 | 山东烟台 | 1991/3/24 | 水果 |
商品类型表:
类型id | 类型名称 |
---|---|
1 | 水果 |
2 | 肉类 |
3 | 禽蛋奶 |
创建数据对象:
当然,为了更好的学习这一部分的内容,可以先参照一下数据结构部分,
首先可以通过一个列表类型的值创建一个序列,pandas会默认创建一个整数类型的索引:
import pandas
#通过一个列表类型的值创建一个序列
series = pandas.Series(["a","b","c","d"])
print(series)
#效果如下
"""
0 a
1 b
2 c
3 d
dtype: object
"""
当然这里除了使用列表之外,python其他的数据结构也是可以的,只不过字符串和字典还是有一些区别的。
字符串类型
import pandas
#通过一个字符串类型的值创建一个序列
series = pandas.Series("abcdef")
print(series)
#效果如下
"""
0 abcdef
dtype: object
"""
元组类型
import pandas
#通过一个元组类型的值创建一个序列
series = pandas.Series(("a","b","c","d"))
# series = pandas.Series({"a": 1,"b": 2,"c": 3,"d": 4})
print(series)
#效果如下
"""
0 a
1 b
2 c
3 d
dtype: object
"""
字典类型
import pandas
#通过一个字典类型的值创建一个序列
# series = pandas.Series({"a": 1,"b": 2,"c": 3,"d": 4})
print(series)
#效果如下
"""
a 1
b 2
c 3
d 4
dtype: int64
"""
通过pandas的方法生成索引
import pandas
index_data = pandas.date_range("20160201",periods = 3)
order_data = pandas.DataFrame(range(3),index=index_data)
print(order_data)
#效果如下
"""
0
2016-02-01 0
2016-02-02 1
2016-02-03 2
"""
使用DataFrame方法传入字典嵌套的格式可以定义一个二维的结构表,其中字典的建会作为列的名称
import pandas
dicts = {
"a": ["a","b","c","d","e"],
"1": [1,2,3,4,5]
}
data = pandas.DataFrame(dicts)
print(data)
#效果如下
"""
0
2016-02-01 0
2016-02-02 1
2016-02-03 2
"""
#当然如果数据的长度不一致也会出现问题
import pandas
dicts = {
"a": ["a","b","c","d","e"], #5个
"1": [1,2,3,4,5,6] #6个
}
data = pandas.DataFrame(dicts)
print(data)
#效果如下
"""
.......
raise ValueError("arrays must all be same length")
ValueError: arrays must all be same length
"""
#当然在这里可以有更加复杂的案例
import numpy
import pandas
data = pandas.DataFrame(
{
"A": 1.0,
"B": pandas.Timestamp("20130102"), #一个固定的时间戳
"C": pandas.Series(1, index=list(range(4)), dtype="float32"), #一个一维数组
"D": numpy.array([3] * 4, dtype="int32"), #[3,3,3,3]
"E": pandas.Categorical(["test", "train", "test", "train"]), #整合数据结构
"F": "foo", #就是一个支付串
}
)
print(data)
#效果如下
"""
A B C D E F
0 1.0 2013-01-02 1.0 3 test foo
1 1.0 2013-01-02 1.0 3 train foo
2 1.0 2013-01-02 1.0 3 test foo
3 1.0 2013-01-02 1.0 3 train foo
"""
查看每列数据的类型(以上面的案例为查询对象):
import numpy
import pandas
data = pandas.DataFrame(
{
"A": 1.0,
"B": pandas.Timestamp("20130102"), #一个固定的时间戳
"C": pandas.Series(1, index=list(range(4)), dtype="float32"), #一个一维数组
"D": numpy.array([3] * 4, dtype="int32"), #[3,3,3,3]
"E": pandas.Categorical(["test", "train", "test", "train"]), #整合数据结构
"F": "foo", #就是一个支付串
}
)
print(data)
#效果如下
"""
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object
"""