pandas常用的方法

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'])])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值