Pandas是Python中最常用的数据分析模块,其强大的数据读写性能,丰富的可视化工具,便捷的数据切片及索引功能让Pandas成为了一个Python标准化模块。从个人的使用感受而言,Pandas的确是一个必学的数据分析模块,今天顺便来复习一下吧。
1. Load Pandas and read a csv file:
import pandas as pd
data = pd.read_csv('rhythm.csv')
print data
output:
A B C D
0 1 2 3 4
1 2 2 3 4
2 3 2 3 4
3 4 2 3 4
4 5 2 3 4
5 6 2 3 4
6 7 2 3 4
7 8 2 3 4
- 数据选择及切片
In[5]: data['A']
Out[5]:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
Name: A, dtype: int64
In[7]: data[['A','B’]]
Out[7]:
A B
0 1 2
1 2 2
2 3 2
3 4 2
4 5 2
5 6 2
6 7 2
7 8 2
In[8]: data[['B','A']]
Out[8]:
B A
0 2 1
1 2 2
2 2 3
3 2 4
4 2 5
5 2 6
6 2 7
7 2 8
#注意,不能直接以data[‘A’,’B’]进行多列的选择```
Pandas 现在有个问题就是,如果没有header,就非常难以选择某列数据,比如我想选择第二列数据,但是我不知道第二列数据的header,这个时候怎么办呢?这个时候有两种办法:
* 第一是在读入数据时,就给你的data frame进行headers的命名:
data = pd.read_csv(‘rhythm.cv', names = [‘A’,’B’,’C’,’D’])
or
data.columns = [‘A’,’B’,’C’,’D']
* 第二是调用iloc()函数,例如我想截取第二列 (‘B’列)
In[12]: data.iloc[:,1] #记住python总以0开头
Out[12]:
0 2
1 2
2 2
3 2
4 2
5 2
6 2
7 2
Name: B, dtype: int64
通过.iloc()函数,我们甚至可以肆无忌惮的截取任意位置的数据:
In[14]: data.iloc[[0,2,4],1:3]
Out[14]:
B C
0 2 3
2 2 3
4 2 3
3. 过滤及索引
接下来我们说说data frame的过滤以及索引功能,举个栗子,加入我们现在想选出A列数字大于或者等于5的行,我们可以进行如下操作:
In[15]: data[data.A>=5]
Out[15]:
A B C D
4 5 2 3 4
5 6 2 3 4
6 7 2 3 4
7 8 2 3 4
或者设定多个筛选条件:
In[16]: data[(data.A >= 5) & (data.A <= 7)]
Out[16]:
A B C D
4 5 2 3 4
5 6 2 3 4
6 7 2 3 4
我们也可以调用isin()函数来对某些值进行特定选择
In[20]: data2[data2['A'].isin([3,6,7])]
Out[20]:
A B C D
2 3 2 3 4
5 6 2 3 4
6 7 2 3 4
今天暂时先说到这里,下一篇我们继续讨论pandas的一些进阶操作,一下提供一些常用的描述性函数作为参考:
In[21]: data.head()
Out[21]:
A B C D
0 1 2 3 4
1 2 2 3 4
2 3 2 3 4
3 4 2 3 4
4 5 2 3 4
In[23]: data.tail(1)
Out[23]:
A B C D
7 8 2 3 4
In[24]: data.describe()
Out[24]:
A B C D
count 8.00000 8 8 8
mean 4.50000 2 3 4
std 2.44949 0 0 0
min 1.00000 2 3 4
25% 2.75000 2 3 4
50% 4.50000 2 3 4
75% 6.25000 2 3 4
max 8.00000 2 3 4
In[26]: data.dtypes
Out[26]:
A int64
B int64
C int64
D int64
dtype: object
网友评论