Pandas用法

1. Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);
用于数据挖掘和数据分析,同时也提供数据清洗功能。



2. DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型
(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。

3. 它是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签
(即索引)组成。仅由一组数据也可产生简单的Series对象。

4. 应用领域:包括金融,神经科学,经济学,统计学,广告,网络分析,等等。

 4.安装方式:安装Anaconda,即可调用pandas库

5. 基本用法:
 前提:import pandas as pd
 5.1 Series
  1.一维语法:pd.Series(data,index)
  data:数据
  index:数据的索引值,相当于字典中的key
 5.2 DataFrame(df)
  df = pd.DataFrame(二维数据,行名,列名),index是行,column是列
  1.多个Series构建的DataFrame
 2.用法:
  删除行或列,用df.drop('行名或列名',axis=0/1),axis=0表示删除行,axis=1表示删除列
  获取某一行:df.loc['行名']或数字df.loc[i]第i行
  获取某一行某一列值:df.loc['行名','列名']
  获取某几行某几列值:df.loc[['行名1','行名2'...],['列名1','列名2'...]]
  对df内部进行判断输出:如df[df['列名']>0],第一个df为判断输出的二维数列转为df格式
  对某个df进行分组计算:df.groupby('列名'),会根据某列名中的值整成一个集set,然后输出,如果后面加操作函数,会根据操作函数操作如.mean()
  对df进行数据分析:df.describe(),计数、平均值、标准层、最小值,25% 50% 75% 位置的值、最大值
  两个df用join进行连接,合并成一个新的表
  某一列的值,把列里面的值汇总成一个集:df['列名'].unique()
  某一列的值,得出不重复值的个数:df['列名'].nuunique()
  某一列的值,汇总成一个集,并分析每个值出现的次数:df['列名'].value_counts()
  对采集到的值应用自定义的函数:df['列名'].apply(自定义的函数的函数名),例如用lambda:df['列名'].apply(lambda x: x*x)
  获取df的所有列名:df.columns
  按照某一列进行排序:df.sort_value('列名'),值从小到大
  寻找表中的空值:df.isnull()

6. 数据透视表
 Pandas 的数据透视表能自动帮你对数据进行分组、切片、筛选、排序、计数、求和或取平均值
 语法:df.pivot_table(data, values='data中列名', index=['data中列名'], columns=['data中列名'])
 value:代表我们需要汇总统计的数据所在的列

7. 导入导出数据:
 读取 CSV 文件:pd.read_csv()
 输出 CSV 文件:pd.to_csv(),如果加index=False,表示不用序号也写入到csv文件中
 读取 Excel 表格文件:pd.read_excel() ,默认是Sheet1,有指定要加:sheet_name='Sheet名'
 写入 Excel 表格文件:pd.to_excel() ,默认是Sheet1,有指定要加:sheet_name='Sheet名'
 读取html文件:pd.read_html('url地址'),需要通过df['number']访问不同数据

8. 时间序列
 创建一个连续的日期数列:pd.date_range(start='开始日期',end='结束日期')
 创建一个连续的日期数列,指定天数:pd.date_range(start='开始日期',periods=整数)
 创建一个连续的日期数列,按照频率:pd.date_range(start='开始日期',,end='结束日期',priods=整数)

9.日期对比:  先获取指定行的日期,例如最后一行的日期值:df.iloc[-1:]['date'],此时是Serise类型
 取出date值:df.iloc[-1:]['date'].values[0],此时是datetime64类型,转成str可以进行对比判断
 如果要转成2023-01-01的格式:pd.to_datetime(df.iloc[-1:]['date'].values[0]).strftime('%Y-%m-%d')

10.条件判断:
 10.1两个条件判断:df2 = df[(df['New IP Address'] == '10.159.176.31') & (df['Stack'] ==1)],表示查询表中ip地址且Stack字段是1的条目

11.将数列转成pandas:
 例如Datalist是一个数列,可以使用:pd.DataFrame(Datalist)

12.获取pandas dtype为object的值:
 例如:df['ip'].values会获取得到数列,如果想获得str可以使用:df['ip'].values[0]