pandas学习笔记

---恢复内容开始---

1. pandas基本介绍

如果用 python 的列表和字典来作比较, 那么可以说 Numpy 是列表形式的,没有数值标签,而 Pandas 就是字典形式。

Pandas是基于Numpy构建的,让Numpy为中心的应用变得更加简单。

2. 主要数据结构Series和DataFrame

2.1 series

https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.Series.html

class pandas.Series(data=Noneindex=Nonedtype=Nonename=Nonecopy=Falsefastpath=False)

 

简单应用:

s_1 = pd.Series([1,3,6,"Solaria"])
print(s_1)
'''
0          1
1          3
2          6
3    Solaria
dtype: object
'''
s_2 = pd.Series(["田所浩二",24,"student"],index=["name","age","job"])
print(s_2)
'''
name       田所浩二
age          24
job     student
dtype: object
'''

如果不指定索引,默认创建一个从0到N-1的整数型索引。

补充说明参照http://wiki.jikexueyuan.com/project/start-learning-python/311.html

2.2 DataFrame

dates = pd.date_range("20180901",periods=6)
df1 = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
print(df1)
'''
                   a         b         c         d
2018-09-01 -1.613680 -0.808594  0.934430 -1.567014
2018-09-02 -1.190811  0.468820  0.266371  0.915617
2018-09-03 -0.021745  0.289339 -0.788975  0.396066
2018-09-04 -0.449416 -2.457146 -0.191262  0.079434
2018-09-05 -0.644157 -1.462640  1.077583 -1.320584
2018-09-06 -1.482122 -0.320155  0.303585  0.641941
'''

DataFrame是一个表格型的数据结构,它包含一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。

DataFrame既有行索引,也有列索引,它可以被看做由Series组成的大字典。

可以根据每一个不同的索引来挑选数据,比如挑选a的数据:

print(df1['a'])
'''
2018-09-01   -1.637573
2018-09-02    0.477573
2018-09-03    1.885033
2018-09-04   -0.646847
2018-09-05   -0.178284
2018-09-06   -0.870270
Freq: D, Name: a, dtype: float64
'''

DataFrame的简单运用:

(1)我们在创建一组没有给定行标签和列标签的数据时,会采取默认的从0开始的index。

df2 = pd.DataFrame(np.arange(0,12).reshape((3,4)))
print(df2)
'''
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
'''

(2)另一种生成df的方法:

df2 = pd.DataFrame({'A': 1.,
                    'B': pd.Timestamp('20130102'),
                    'C': pd.Series(1, index=list(range(4)), dtype='float32'),
                    'D': np.array([3] * 4, dtype='int32'),
                    'E': pd.Categorical(["test", "train", "test", "train"]),
                    'F': 'foo'})
print(df2)
'''
     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
'''

这种方法可以对每一列的数据进行特殊对待。

(3)常用属性:dtype index columns values 

# 查看数据类型
print(df2.dtypes)
'''
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object
'''
# 查看列的序号
print(df2.index)
'''
Int64Index([0, 1, 2, 3], dtype='int64')
'''
# 查看每种数据的名称
print(df2.columns)
'''
Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
'''
# 查看df2的值
print(df2.values)
'''
[[1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'train' 'foo']
 [1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2013-01-02 00:00:00') 1.0 3 'train' 'foo']]
'''

(4)常用方法:describe() T sort_index()

# 查看数据的总结
print(df2.describe())
'''
         A    C    D
count  4.0  4.0  4.0
mean   1.0  1.0  3.0
std    0.0  0.0  0.0
min    1.0  1.0  3.0
25%    1.0  1.0  3.0
50%    1.0  1.0  3.0
75%    1.0  1.0  3.0
max    1.0  1.0  3.0
'''
# 翻转数据(转置矩阵)
print(df2.T)
'''
                     0         ...                             3
A                    1         ...                             1
B  2013-01-02 00:00:00         ...           2013-01-02 00:00:00
C                    1         ...                             1
D                    3         ...                             3
E                 test         ...                         train
F                  foo         ...                           foo

[6 rows x 4 columns]
'''
# 对数据的index进行排序
print(df2.sort_index(axis=1, ascending=False)) # ascending=False时,倒序排列
'''
     F      E  D    C          B    A
0  foo   test  3  1.0 2013-01-02  1.0
1  foo  train  3  1.0 2013-01-02  1.0
2  foo   test  3  1.0 2013-01-02  1.0
3  foo  train  3  1.0 2013-01-02  1.0
'''
# 对数据的值排序输出
print(df2.sort_values(by='B'))
'''
     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
'''

2. 选择数据

建立一个6*4的矩阵数据。

 

---恢复内容结束---

posted @ 2018-09-13 20:58  ArnoDorian  阅读(107)  评论(0编辑  收藏  举报