python之pandas详解

pandas

series

创建series
# 创建一个空的系列
s = pd.Series()
# ndarray、数组创建一个系列
data = np.array(['a','b','c','d'])
s = pd.Series(data,index=[100,101,102,103])
# 从字典创建一个系列	
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
# 从标量创建一个系列
s = pd.Series(5, index=[0, 1, 2, 3])
元素访问
# 使用索引检索元素
s =pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
print(s[0], s[:3], s[-3:])
# 使用标签检索数据
print(s['a'], s[['a','c','d']])
pandas日期处理
# to_datetime() 转换日期数据类型
dates = pd.to_datetime(dates)
# datetime类型数据支持日期运算
delta = dates - pd.to_datetime('1970-01-01')
# 以日为频率
Datelist = pd.date_range('2019/08/21',
 periods=5,freq='M')
# 表示商业日期范围
datelist = pd.bdate_range('2011/11/03', periods=5)
Series.dt.year/Series.dt.month/Series.dt.day/Series.dt.weekofyear/Series.dt.is_year_end

DataFrame

创建dataframe
# 外层为列表,表示行。
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
# 外层为字典,表示列。
data={'Name':['Tom','Jack','Steve','Ricky'],'Age':[28,34,29,42]}
df=pd.DataFrame(data,index=['s1','s2','s3','s4'])
data = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(data)
访问DataFrame
#### iloc访问:
行列都能:df.iloc[2][0]
#### 列访问:
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
df['one']
df[['one', 'two']]         #掩码读取
df['score']=pd.Series([90, 80, 70, 60], index=['s1','s2','s3','s4'])   #添加
df.pop('two')            #删除
#### 行访问:
df[2:4]                 #索引访问
df.loc['b']
df.loc[['a', 'b']]           #loc加掩码访问
#### 行添加:
df2 = pd.DataFrame([['ww', 16], ['zl', 8]], columns = ['Name','Age'])
df = df.append(df2)
df = df.drop(0)   # 删除index为0的行
#### 修改DataFrame中的数据:
df['Name'][0] = 'Tom'  #修改通常通过行进行

pandas核心

排序
#### 按行标签排序:
sorted_df=unsorted_df.sort_index()  #行索引
sorted_df = unsorted_df.sort_index(ascending=False)  #行索引降序
#### 按列标签排序:
sorted_df=unsorted_df.sort_index(axis=1)     # 按照列标签进行排序
#### 按某列值排序:
sorted_df = unsorted_df.sort_values(by=['Age', 'Rating'], ascending=[True, False])  # 先按Age进行升序排序,然后按Rating降序排序
分组聚合
groups = df.groupby('Year')  #遍历每个分组
for year,group in groups:
    print (year)
	print (group)
groups.get_group(2014)     #获取2014年组内容
# 聚合每一年的平均的分
grouped = df.groupby('Year')
print (grouped['Points'].agg(np.mean))
# 聚合每一年的分数之和、平均分、标准差
grouped = df.groupby('Year')
agg = grouped['Points'].agg([np.sum, np.mean, np.std])
print (agg)
数据表关联操作
data = pd.merge(left,right)  #默认是内连接
rs = pd.merge(left, right, how='left') 
rs = pd.merge(left,right,on='subject_id', how='right') 
透视表与交叉表

根据一个或多个键对数据进行分组聚合,并根据每个分组进行数据汇总。

交叉表(crosstab)是一种用于计算分组频率的特殊透视表。

data.pivot_table(index=['class_id', 'gender'], values=['score'],columns=['age'],
                 								margins=True, aggfunc='max')     #透视表
pd.crosstab(data.class_id,data.gender, margins=True)     #交叉表统计数量
pandas可视化

条形图

df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar()

直方图

df = pd.DataFrame()
df.plot.hist(bins=20)   # 分成20份

散点图

df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b')

饼状图

df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot.pie(subplots=True)
数据读取与存储
#### 读取与存储csv:
# filepath 文件路径。该字符串可以是一个URL。有效的URL方案包括http,ftp和file 
# sep 分隔符。read_csv默认为“,”,read_table默认为制表符“[Tab]”。
# header 接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别。
# names 接收array。表示列名。
# index_col 表示索引列的位置,取值为sequence则代表多重索引。 
# dtype 代表写入的数据类型(列名为key,数据格式为values)。
# engine 接收c或者python。代表数据解析引擎。默认为c。
# nrows 接收int。表示读取前n行。
pd.read_table(filepath_or_buffer,sep='\t',header='infer',names=None,index_col=None,dtype=None, engine=None, nrows=None) 
pd.read_csv(filepath_or_buffer,sep=',',header='infer',names=None,index_col=None,dtype=None, engine=None, nrows=None)
#### 存储为csv:
DataFrame.to_csv(excel_writer=None, sheetname=None, header=True, index=True, index_label=None, mode=’w’, encoding=None) 
#### 读取与存储excel:
# io 表示文件路径。
# sheetname 代表excel表内数据的分表位置。默认为0。 
# header 接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别。
# names 表示索引列的位置,取值为sequence则代表多重索引。
# index_col 表示索引列的位置,取值为sequence则代表多重索引。
# dtype 接收dict。数据类型。
pandas.read_excel(io, sheetname=0, header=0, index_col=None, names=None, dtype=None)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PandasPython编程语言的一个开源数据分析和数据处理库。它提供了丰富的数据结构和功能,使得数据分析任务更加简单和高效。而Xmind是一种思维导图工具,可以帮助用户组织和展示复杂概念和信息。 Pandas库结合了NumPy的功能和扩展了更高级的数据结构,最重要的是它的数据结构--Dataframe。Dataframe是一个二维的表格型数据结构,类似于数据库表或Excel中的表格。它提供了各种方法来处理和操纵这些表格数据,包括数据的索引、选择、过滤、排序、分组等。 使用Pandas库可以读取和写入多种数据格式,如CSV、Excel、SQL数据库等。通过Pandas的数据结构,用户可以进行数据清洗和转换,处理缺失数据、重复数据、异常数据等。此外,Pandas还提供了强大的时间序列处理功能,可以进行时间索引、频率转换、滞后、移动窗口等操作。 在数据分析方面,Pandas提供了各种统计计算的方法,如平均值、标准差、协方差、相关系数等。同时,Pandas库还能够进行数据可视化,通过绘图的方式展示数据的分布、趋势和关联关系。这使得数据分析师可以更加直观地理解和解释数据。 Xmind是一种用于创建思维导图的工具,它可以将复杂的概念和信息以图形化的方式展示出来。思维导图可以帮助用户整理和梳理思路,帮助用户更好地理解和记忆知识。在使用Pandas进行数据分析时,可以使用Xmind来记录和整理自己的数据分析过程,包括数据处理的步骤、分析的结果和相关的观察或发现。这样可以帮助用户更好地管理和沟通数据分析的过程和结果。 总结来说,Pandas是一个功能强大的数据分析和处理库,通过其丰富的数据结构和方法,可以简化和高效完成各种数据分析任务。而Xmind则是一种思维导图工具,能够帮助用户整理和展示复杂概念和信息,方便用户将数据分析过程和结果进行可视化和整理。使用Pandas和Xmind可以让数据分析任务更加简单和直观。 ### 回答2: Pandas是一个开源的Python数据分析库,它提供了丰富的数据结构和数据分析工具,使得数据处理更加简单、高效。而Pandas库中的核心数据结构是DataFrame,可以理解为一个二维的表格数据,类似于Excel中的数据表。Xmind是一款思维导图软件,可以帮助我们更好地组织和展示思维。 Pandas可以通过Xmind来进行详解,主要包括以下几个方面: 1. DataFrame的创建和基本操作:可以通过读取文件、字典、Numpy数组等方式来创建DataFrame,然后可以进行数据的选取、切片、筛选等操作。 2. 数据的清洗和处理:Pandas提供了强大的数据清洗和处理功能,可以用来处理缺失数据、重复数据以及异常值。也可以进行数据的合并、拆分、排序等操作,以及字符串、时间序列、数值等类型的转换。 3. 数据的分组和聚合:Pandas的分组和聚合功能非常强大,可以进行按列或者按行的分组操作,然后对每一组数据进行一些聚合操作,如求和、计数、平均值等。这样可以更好地了解数据的分布和概况。 4. 数据的可视化:Pandas可以配合Matplotlib等数据可视化工具,对数据进行绘图和可视化操作。可以绘制线图、柱状图、饼图等各种图表,更直观地展示数据的特征和趋势。 综上所述,使用Pandas库可以更方便地进行数据分析和处理,而通过Xmind来详细说明Pandas的各种功能和操作,能够更好地帮助用户理解和应用这些功能,从而更高效地进行数据分析和处理。 ### 回答3: Pandas是一个Python库,专门用于数据分析和数据操作。它提供了高效的数据结构和数据分析工具,使得使用Python进行数据处理变得更加方便和快速。而Xmind是一款脑图软件,用于整理和组织复杂的思维结构。 Pandas提供的数据结构主要包括两种:Series和DataFrame。Series是一维的带有标签的数组,类似于传统的数组或列表。每个元素都有唯一的标签,可以通过标签进行索引取值,方便进行数据查找和操作。DataFrame则是二维的表格型数据结构,类似于关系型数据库中的表。它由多个Series组成,每个Series代表一列数据。DataFrame可以进行行列索引、数据选择和过滤,方便进行数据的清洗和分析。 Pandas提供了丰富的数据操作和分析工具。可以进行数据的读取、清洗、转换和处理。可以对数据进行切片、聚合、排序和合并等操作。还可以对数据进行统计分析、绘图和可视化。Pandas还支持对缺失数据的处理,能够灵活处理数据中的空值,并进行填充或删除操作。 Xmind是一款强大的思维导图软件,可以帮助用户将复杂的信息整理、组织和展示。用户可以使用Xmind创建思维导图来表示数据结构、函数关系、工作流程等。通过将Python中的Pandas库和Xmind结合使用,可以更好地理解和展示数据分析的过程。可以使用脑图绘制数据处理流程图,方便团队内部的交流和理解。同时,可以使用脑图来整理数据分析中的关键知识点和技巧,方便进行知识传递和分享。 综上所述,PythonPandas库提供了便捷的数据处理和分析工具,而Xmind则可以辅助整理和展示数据分析的过程和结果。两者结合使用,可以帮助用户更好地进行数据分析和可视化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值