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=None, index=None, dtype=None, name=None, copy=False, fastpath=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的矩阵数据。
---恢复内容结束---