python之pandas

目录

目录

1.生成数据表

读取csv文件

构建DataFrame

2.数据信息查看和索引

查看DataFrame的基本信息

索引

3.数据可视化

可视化:matplotlib.pyplot绘图

可视化:pandas绘图

制图实例

4.数据清洗

缺失值处理

字符串处理

数据转换:格式转换和异常值处理

重复项

重命名索引

离散化

5.数据规整

丢弃数据

函数应用和映射

排序和排名

数据合并

数据重塑

6.数据计算和统计

算术运算

计算统计描述

相关系数和协方差

7.数据汇总

数据聚合

聚合的多函数应用

 apply() 一般性的"拆分——应用——合并

透视表和交叉表


 

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下几种途径学习PythonPandas教程: 1. 官方文档:Pandas官方文档是学习和使用Pandas的首要资源。官方文档提供了详细的教程、示例和文档,涵盖了Pandas的各个方面。你可以在Pandas官方网站上找到最新的官方文档链接。 2. 在线教程:还有很多在线教程可以帮助你学习Python中的Pandas。其中一个很受欢迎的教程是《PythonPandas使用教程》。该教程提供了Pandas的概述、安装方法和基本使用方法,适合初学者入门。 3. 书籍资源:有很多优秀的书籍专门介绍了Python中的Pandas。《利用Python进行数据分析》是一本非常经典的书籍,其中有很多关于Pandas的内容。这本书提供了丰富的示例和实践项目,帮助你深入理解和应用Pandas。 总结起来,你可以通过阅读官方文档、参考在线教程和阅读相关书籍来学习Python中的Pandas教程。这些资源将为你提供丰富的知识和实践经验,帮助你更好地掌握Pandas的使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [pythonpandas模块最全最详细的教程](https://blog.csdn.net/qdPython/article/details/128535116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [PythonPandas使用教程](https://blog.csdn.net/tlammon/article/details/105448216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值