目录
目录
1.生成数据表
读取csv文件
pd.read_csv('path/filename.csv',sep=',',index_col=None,header=1,encoding='utf-8',paser_datas=['data'],na_value=['N/A'],dtype={'column1':np.str})
#sep:分隔符
#index_col:指明哪一列作为行索引
#header:指明某一行作为列索引,默认是第0行
#paser_datas:如果数据集里面,有些列时间,通过paser_datas转化为时间格式
#dtype:指明某一列的类型
pd.read_csv('data/bikes.csv', sep=';', parse_dates=['Date'],encoding='latin1',header=0, dayfirst=True, index_col='Date')
(文件名,sep分隔符,parse_date日期格式,encoding编码格式,header列索引取值行,dayfirst不懂,index_col行索引取值)
默认编码格式为‘utf-8’,encoding需要改为'latin1'
csv的默认分割符为';',seq需要传参为';',则会返回一个DataFrame格式数据
In [125]: pd.read_csv('bikes.csv',encoding='latin1',sep=';').head(5)
Out[125]:
Date ... St-Urbain (données non disponibles)
0 01/01/2012 ... NaN
1 02/01/2012 ... NaN
2 03/01/2012 ... NaN
3 04/01/2012 ... NaN
4 05/01/2012 ... NaN
[5 rows x 10 columns]
构建DataFrame
1.2 通过字典生成DataFrame对象
pd.DataFrame(dict,index=[...],columns=[...])#dict是一个字典,key-value中的value是一维数组或者列表
1.3 通过列表或者数组构建DataFrame对象
pd.DataFrame(like-array,index=[....],columns=[...])
1.4 通过字典/list/一维数组构建Series对象
pd.Series(data,index=[....])#data可以是字典、list或者一维数组
2.数据信息查看和索引
查看DataFrame的基本信息
df.header()方法,查看头几行,默认头五行
df.tail()方法,查看后几行,默认后五行
df.index,属性,查看DataFrame行索引
df.columns,属性,查看DataFrme列索引
df.values,属性,查看元素,返回array数组
df.shape,属性,查看DataFrame形状
df.dtypes,属性,查看DataFrame每列的数据类型
df.info(),方法,查看基本信息(列的类型、每列的数量、df占得内存等)
In [125]: pd.read_csv('bikes.csv',encoding='latin1',sep=';').head(5)
Out[125]:
Date ... St-Urbain (données non disponibles)
0 01/01/2012 ... NaN
1 02/01/2012 ... NaN
2 03/01/2012 ... NaN
3 04/01/2012 ... NaN
4 05/01/2012 ... NaN
[5 rows x 10 columns]
In [126]: pd.read_csv('bikes.csv',encoding='latin1',sep=';').tail(5)
Out[126]:
Date ... St-Urbain (données non disponibles)
305 01/11/2012 ... NaN
306 02/11/2012 ... NaN
307 03/11/2012 ... NaN
308 04/11/2012 ... NaN
309 05/11/2012 ... NaN
[5 rows x 10 columns]
In [127]: pd.read_csv('bikes.csv',encoding='latin1',sep=';').index
Out[127]: RangeIndex(start=0, stop=310, step=1)
In [70]: df=pd.read_csv('bikes.csv',encoding='latin1',sep=';').head(5)
In [71]: df
Out[71]:
Date ... St-Urbain (données non disponibles)
0 01/01/2012 ... NaN
1 02/01/2012 ... NaN
2 03/01/2012 ... NaN
3 04/01/2012 ... NaN
4 05/01/2012 ... NaN
[5 rows x 10 columns]
In [72]: df.shape
Out[72]: (5, 10)
In [73]: df.values
Out[73]:
array([['01/01/2012', 35, nan, 0, 38, 51, 26, 10, 16, nan],
['02/01/2012', 83, nan, 1, 68, 153, 53, 6, 43, nan],
['03/01/2012', 135, nan, 2, 104, 248, 89, 3, 58, nan],
['04/01/2012', 144, nan, 1, 116, 318, 111, 8, 61, nan],
['05/01/2012', 197, nan, 2, 124, 330, 97, 13, 95, nan]],
dtype=object)
In [74]: df.columns
Out[74]:
Index(['Date', 'Berri 1', 'Brébeuf (données non disponibles)',
'Côte-Sainte-Catherine', 'Maisonneuve 1', 'Maisonneuve 2', 'du Parc',
'Pierre-Dupuy', 'Rachel1', 'St-Urbain (données non disponibles)'],
dtype='object')
In [75]: df.index
Out[75]: RangeIndex(start=0, stop=5, step=1)
In [76]: df.dtypes
Out[76]:
Date object
Berri 1 int64
Brébeuf (données non disponibles) float64
Côte-Sainte-Catherine int64
Maisonneuve 1 int64
Maisonneuve 2 int64
du Parc int64
Pierre-Dupuy int64
Rachel1 int64
St-Urbain (données non disponibles) float64
dtype: object
In [77]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 10 columns):
Date 5 non-null object
Berri 1 5 non-null int64
Brébeuf (données non disponibles) 0 non-null float64
Côte-Sainte-Catherine 5 non-null int64
Maisonneuve 1 5 non-null int64
Maisonneuve 2 5 non-null int64
du Parc 5 non-null int64
Pierre-Dupuy 5 non-null int64
Rachel1 5 non-null int64
St-Urbain (données non disponibles) 0 non-null float64
dtypes: float64(2), int64(7), object(1)
memory usage: 480.0+ bytes
索引
索引某一列或几列
df['columns1']#查看‘columns1’这一列的性信息
df[['col1','col2]]#索引多列
In [12]: df
Out[12]:
o p q r s
a 0 1 2 3 4
b 5 6 7 8 9
c 10 11 12 13 14
d 15 16 17 18 19
In [13]: df['o']
Out[13]:
a 0
b 5
c 10
d 15
Name: o, dtype: int64
In [14]: df[['o','p']]
Out[14]:
o p
a 0 1
b 5 6
c 10 11
d 15 16
获取行或多行
iloc或loc[行,列]
df.loc[['index1','index1'],['col1','col2']]#针对索引名进行取数
df.iloc[[0,3,5],[2,4,1]]#针对索引号进行取数
In [16]: df.loc['a']
Out[16]:
o 0
p 1
q 2
r 3
s 4
Name: a, dtype: int64
In [17]: df.loc['a','o']
Out[17]: 0
In [18]: df.loc[['a','b'],['o','p']]
Out[18]:
o p
a 0 1
b 5 6
In [19]: df.iloc[1]
Out[19]:
o 5
p 6
q 7
r 8
s 9
Name: b, dtype: int64
In [20]: df.iloc[[1],[1]]
Out[20]:
p
b 6
3.3 布尔型索引
df[boo_arr]#索引的是行信息,bool_arr是一个跟行数量一致的bool型数组或Series对象
df.loc[bool_arr,['col1']]#布尔型索引针对行
In [27]: df
Out[27]:
o p q r s
a 0 1 2 3 4
b 5 6 7 8 9
c 10 11 12 13 14
d 15 16 17 18 19
In [28]: df[[True,False,True,False]]#需要和行数相同的布尔型序列
Out[28]:
o p q r s
a 0 1 2 3 4
c 10 11 12 13 14
In [34]: df.loc[[True,False,True,False],['o','q']]#需要配合loc使用
Out[34]:
o q
a 0 2
c 10 12
4. value_counts(),只能对列对象使用,即针对Series对象的频数统计,即
df['col1].value_counts()#频数统计,按降序返回对DataFrame不生效
In [39]: df['o'].value_counts()
Out[39]:
15 1
5 1
10 1
0 1
Name: o, dtype: int64
4.1 isna()和notna(),列使用针对缺失值的判断,列对象,DataFrame对象均可
df['col1'].is