series和读取外部数据
- 一、为什么要学习pandas?
- 二、pandas常用数据类型
- 1. Series创建
- 1.1 通过列表创建
- 1.2 通过字典创建
- 2. Series切片和索引
- 2.1 根据索引和位置取值
- 2.2 如何知道索引和具体的值
- 三、pandas读取外部数据
一、为什么要学习pandas?
numpy已经能够帮助我们处理数据,能够结合matplotlib解决数据分析的问题,那么pandas学习目的在哪里?
numpy能够帮我们处理数值型数据,但是很多时候除了数值之外,还有字符串、时间序列等
比如:通过爬虫获取到存储在数据库的数据
比如:之前YouTube中除了数值还有国家的信息、视频的分类(tag)信息、标题信息等
所以,numpy能够帮我们处理数值,但是pandas除了处理数值之外(基于numpy),还能帮助我们处理其他类型的数据
二、pandas常用数据类型
- Series 一维,带标签数组,标签指的索引
- dataframe二维,Series容器
1. Series创建
1.1 通过列表创建
代码如下(示例):
In [22]:import pandas as pd
In [23]:pd.Series([1,2,31,12,3,4])
Out[23]:
0 1
1 2
2 31
3 12
4 3
5 4
dtype: int64
In [24]:t = pd.Series([1,2,31,12,3,4])
In [25]:type(t)
Out[25]: pandas.core.series.Series
In [26]:t
Out[26]:
0 1
1 2
2 31
3 12
4 3
5 4
dtype: int64
指定索引
In [27]:t1 = pd.Series([1,23,2,2,1],index=list("abcde"))
In [28]:t1
Out[28]:
a 1
b 23
c 2
d 2
e 1
dtype: int64
In [33]:t3 = pd.Series(np.arange(5),index=list("abcde"))
In [34]:t3
Out[34]:
a 0
b 1
c 2
d 3
e 4
dtype: int64
1.2 通过字典创建
键对应索引
In [29]:temp_dict = {"name":"xiaoli","age":21,"tell":10086}
In [30]:t2 = pd.Series(temp_dict)
In [31]:t2
Out[31]:
name xiaoli
age 21
tell 10086
dtype: object
重新给其指定其他的索引之后,如果能够对应上,就取其值,如果不能,就为Nan,这时pandas会自动根据数据类型更改series的dtype类型,变为float类型
更改dtype类型的方式和numpy一样,t.astype()即可
2. Series切片和索引
2.1 根据索引和位置取值
某一个具体的值
In [35]:t2
Out[35]:
name xiaoli
age 21
tell 10086
dtype: object
In [36]:t2["age"]
Out[36]: 21
In [37]:t2[1]
Out[37]: 21
In [38]:t2[0]
Out[38]: 'xiaoli'
In [39]:t2["name"]
Out[39]: 'xiaoli'
连续和不连续的多个值
In [41]:t2[:2] #前开后闭
Out[41]:
name xiaoli
age 21
dtype: object
In [44]:t2[[0, 2]]
Out[44]:
name xiaoli
tell 10086
dtype: object
In [46]:t2[["age", "tell"]]
Out[46]:
age 21
tell 10086
dtype: object
布尔索引
In [47]:t
Out[47]:
0 1
1 2
2 31
3 12
4 3
5 4
dtype: int64
In [48]:t[t>10]
Out[48]:
2 31
3 12
dtype: int64
切片索引
In [50]:t[1:7:2]
Out[50]:
1 2
3 12
5 4
dtype: int64
切片:直接传入start end 或者步长即可
索引:一个的时候直接传入序号或者index,多个的时候传入序号或者index的列表
2.2 如何知道索引和具体的值
索引
In [52]:t2.index
Out[52]: Index(['name', 'age', 'tell'], dtype='object')
In [56]:len(t2.index)
Out[56]: 3
In [59]:list(t2.index)
Out[59]: ['name', 'age', 'tell']
In [60]:list(t2.index)[:2]
Out[60]: ['name', 'age']
索引的值
In [54]:t2.values
Out[54]: array(['xiaoli', 21, 10086], dtype=object)
Series对象本质上由两个数组构成,一个数组构成对象的键(index, 索引),一个数组构成对象的值(values),键->值
ndarray的很多方法都可以运用于series类型,比如argmax,clip,series具有where方法,但是结果和adarray不同
三、pandas读取外部数据
现在假设有一组关于狗名字的统计数据,为了观察这组数据的情况,该怎么做?
读取csv文件
import pandas as pd
# pandas读取csv中的文件
dogname = pd.read_csv(".../dogNames2.csv")
print(dogname)
对于数据库比如mysql或者mongodb中的数据如何使用?
pr.read_sql(sql_sentence, connection) 传入sql语句和链接