欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pandas常用的方法

程序员文章站 2022-05-18 19:36:46
...

andas学习
1,pandas是什么
是python的一个数据分析包,该工具是为了解决数据分析任务而创建的, 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具,
pandas提供了大量能使我们快速便捷地处理数据的函数和方法
简言之: 这玩意儿就是用来处理数据的

膜拜一下大神,先入一下门:
https://blog.csdn.net/yiyele/article/details/80605909

import numpy as np
import pandas as pd

if __name__ == '__main__':
	# 将数据库查询到的数据塞入
	execute_result = curs.execute(exe_sql)
    title = [t[0] for t in self.curs.description]
	df = pd.DataFrame(execute_result, columns=title)	


    # 创建数据表
    df = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006],
                       "date": pd.date_range('20130102', periods=6),
                       "city": ['Beijing    ', 'Beijing     ', ' guangzhou    ', 'Shenzhen', 'shanghai', 'BEIJING '],
                       "age": [23, 44, 54, 32, 34, 32],
                       "category": ['100-A', '100-B', '110-A', '110-C', '210-A', '130-F'],
                       "price": [1200, None, 2133, 5433, np.nan, 4432]},
                      columns=['id', 'date', 'city', 'category', 'age', 'price'])

    # 写入到EXCEL      engine='xlsxwriter': 防止 IllegalCharacterError   需要导入xlsxwriter包
    df1.to_excel('excel_name.xlsx', sheet_name='sheet1', engine='xlsxwriter')
    # 写入csv
    df.to_csv('csv_name.csv')
    # 写入html
    df.to_html('csv_name.html')

    # 读取数据
    df_csv = pd.DataFrame(pd.read_csv('csv_name.csv', header=1))
    print('csv_name', df_csv.values)
    df_xlsx = pd.DataFrame(pd.read_excel('excel_name.xlsx'))
    print('excel_name', df_xlsx.values)
	
    # 数据表信息查看
    print(' 查看维度', df.shape)
    print('查看基本信息', df.info())
    print('每一列数据的格式', df.dtypes)
    print('某一列格式', df['id'].dtype)
    print('判断空值\n', df.isnull())
    print('判断空值某一列', df['id'].isnull())
    print('查看数据表的值\n', df.values)
    print('查看列名称', df.columns)
    # 默认前10行数据
    print('查看前十行\n', df.head())
    # 默认后10 行数据
    print('查看后十行\n', df.tail())


     # 数据表清洗
    print('空值填充', df.fillna(value=0))
    # 对某一列的空值进行均值填充
    df['price'] = df['price'].fillna(df['price'].mean())
    print('对某一列的空值进行均值填充\n', df.head())
    # 清楚city字段的字符空格
    df['city'] = df['city'].map(str.strip)
    print('清楚city字段的字符空格\n', df.head())
    print('转小写\n', df['city'].str.lower())
    print('转大写\n', df['city'].str.upper())
    print('数据格式更改之前:', df['price'].dtype, '更改数据格式之后', df['price'].astype('int').dtype)
    df = df.rename(columns={'category': 'category-size'})
    print('修改列名称', df.head())
    print('删除重复值,默认保留第一次出现的\n', df['city'].drop_duplicates())
    print('删除重复值,保留最后一次出现的\n', df['city'].drop_duplicates(keep='last'))
    print('数据替换', df['city'].replace('guangzhou', 'HZ'))

    # 数据预处理
    df1 = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008],
                        "gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
                        "pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
                        "m-point": [10, 12, 20, 40, 40, 40, 30, 20]})
    df2 = pd.DataFrame({"id": [1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018],
                        "gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
                        "pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
                        "m-point": [101, 122, 203, 404, 405, 406, 307, 208]})



    # 数据合并 merge
    print('交集\n', pd.merge(df, df1, how='inner'))
    print('左连接\n', pd.merge(df, df1, how='left'))
    print('右连接\n', pd.merge(df, df1, how='right'))
    print('并集\n', pd.merge(df, df1, how='outer'))
    # append
    print(df1.append(df2))
 # 数据表清洗
    print('空值填充', df.fillna(value=0))
    # 对某一列的空值进行均值填充
    df['price'] = df['price'].fillna(df['price'].mean())
    print('对某一列的空值进行均值填充\n', df.head())
    # 清楚city字段的字符空格
    df['city'] = df['city'].map(str.strip)
    print('清楚city字段的字符空格\n', df.head())
    print('转小写\n', df['city'].str.lower())
    print('转大写\n', df['city'].str.upper())
    print('数据格式更改之前:', df['price'].dtype, '更改数据格式之后', df['price'].astype('int').dtype)
    df = df.rename(columns={'category': 'category-size'})
    print('修改列名称', df.head())
    print('删除重复值,默认保留第一次出现的\n', df['city'].drop_duplicates())
    print('删除重复值,保留最后一次出现的\n', df['city'].drop_duplicates(keep='last'))
    print('数据替换', df['city'].replace('guangzhou', 'HZ'))

    # 数据预处理
    df1 = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008],
                        "gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
                        "pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
                        "m-point": [10, 12, 20, 40, 40, 40, 30, 20]})
    df2 = pd.DataFrame({"id": [1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018],
                        "gender": ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
                        "pay": ['Y', 'N', 'Y', 'Y', 'N', 'Y', 'N', 'Y', ],
                        "m-point": [101, 122, 203, 404, 405, 406, 307, 208]})

    # 数据合并 merge
    print('交集\n', pd.merge(df, df1, how='inner'))
    print('左连接\n', pd.merge(df, df1, how='left'))
    print('右连接\n', pd.merge(df, df1, how='right'))
    print('并集\n', pd.merge(df, df1, how='outer'))
    # append
    print(df1.append(df2))

 # 参考 https://www.yiibai.com/pandas/python_pandas_dataframe.html
    # 创建数据帧
    # pandas.DataFrame( data, index, columns, dtype, copy)
    #  data  数据采取各种形式   列表 字典 系列 Numpy ndarrays(多维数组) 或 一个数据帧(DataFrame)
    #  index  于行标签,要用于结果帧的索引是可选缺省值np.arrange(n),如果没有传递索引值
    #  columns 列标签
    #  dtype 每列的数据类型。
    #  copy  如果默认值为False,则此命令(或任何它)用于复制数据
    data = [[1001, '2013-01-02', 'Beijing', '100-A', 23, 1200.0],
            [1002, '2013-01-03', 'Beijing', '200-B', 44, None],
            [1003, '2013-01-04', 'guangzhou', '110-A', 54, 2133.0],
            [1004, '2013-01-05', 'Shenzhen', '110-C', 32, 5433.0],
            [1005, '2013-01-06', 'shanghai', '210-A', 34, None],
            [1000, '2013-01-07', 'BEIJING', '130-F', 32, 4432.0]]
    columns = ['id', 'date', 'city', 'category', 'age', 'price']
    df = pd.DataFrame(data, columns=columns)
    print(df)
    # 增加一行
    add_data = [1011, '2020-01-07', '杭州', 'HZ01', 99, 1000.0]
    df1 = pd.DataFrame([add_data], columns=columns)
    df = df.append(df1)
    print(df)
    # 删除指定行(按索引来的) inplace=True: 不生成新的数据区  原数据区也会被删除
    data1 = df.drop([0, 1, 3, 4], inplace=True)
    print('删除之后\n', data1)
    print('原数据行\n', df)
    # 删除列 del
    del df['id']
    print('删除列 del \n', df)
    # 删除列 .pop()  返回选中的列  且原数据区不再保留该列
    print('删除列 pop \n', df.pop('price'))
    # 删除列  drop
    # print(df)
    print('删除行 drop \n', df.drop(['date'], axis=1))

    df = pd.DataFrame(data, columns=columns)
    print('原始数据\n', df)
    # 删除行city为BEIJING的行
    drop1 = df.drop(df[df['city'].isin(['BEIJING'])].index)
    print('删除北京所在的行\n', drop1)
    print('取反city列中不是Beijing的\n',df[~df['city'].isin(['Beijing'])])

相关标签: Python