• 解决中文显示问题
  • plt.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体
  • plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
  • 技巧:设置最多显示100行20列
    • pd.set_option('display.max_columns',20)
    • pd.set_option('display.max_rows', 1000)
  • 格式化字符串
    • 1.%s-格式化
      • bnums=12
      • tnums=3
      • "There are %s birds and %s tree!"%(bnums,tnums)
    • 2.##str.format()##
      • bnums=12
      • tnums=3
      • "There are {} birds and {} tree!".format(bnums,tnums)
    • 3.f-Strings
      • name='xiaomi'
      • age=12
      • f"he name is {name},and he is {age}!"
      • 另外

        pandas学习笔记

  • 文件数据读取
    • 一.读取纯文本
      • 1.读取csv格式
        • fpath="D:\迪谱\硕士论文\价值评估\数据\\2014-2018研发费用.csv"
        • import pandas as pd
        • data=pd.read_csv(fpath,encoding='gbk')
        • data.columns
        • data.index
        • data.shape
      • 2.读取txt格式
        • fpath="D:\迪谱\硕士论文\价值评估\数据\\2017年医疗器械利润表-副本.TXT"
        •  df2015=pd.read_csv(fpath, sep='\{|\}',delimiter=None, header=None, names=None, index_col=None,encoding='utf-8')
  • 数据查询
    • 一.Pandas查询数据的几种方法
      • 1.df.loc方法,根据行、列的标签值查询
      • 2.df.iloc方法,根据行、列的数字位置查询
      • 3.df.where方法
      • 4.df.query方法
    • 0.数据预处理
      • 替换数据:df2017_c['证券简称']=df2017_c['证券简称'].str.replace('"','').astype('str')
    • 1.单个label值查询
      • #得到单个值:df.loc[''index,'col']
      • #得到一个Series: df.loc['index',[''col1,'col2']]
    • 2.使用值列表批量查询
      • #得到Series: df.loc[['index1','index2','index3'],'col1']
      • #得到一个DataFrame: df.loc[['index1','index2','index3'],['col1','col2']]
    • 3.使用数值区间进行范围查询
      • #行index按区间查询: df.loc['index1':'index3',['col1','col2']]
    • 4.使用条件表达式查询
      • #某一列<10: df.loc[df['col']<10,:] 可以查看df['col']<10的bool值
    • 5.调用函数查询
      • #直接写lambda表达式: df.loc[lambda df : (df['col1']<10),:]
  • 推导式
    • multiples = [i for i in range(30) if i % 3 == 0]
      Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
    • multiples = [squared(i) for i in range(30) if i % 3 == 0]
      Output: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]
  • 行列操作
    • 1.添加行或列
      • 1.添加:df['new_colu']='12'#向 DataFrame 添加一列,该列为同一值
    • 2.合并
      • pd.merge(df2017_c,df2016_y.loc[:,['证券简称','研发费用']],how='left',on='证券简称')
    • 3.修改列名
      • 方式一:columns属性
        • # ①暴力 df.columns = ['a', 'b', 'c', 'd', 'e']
        • # ②修改 df.columns = df.columns.str.strip('$')
        • # ③修改 df.columns = df.columns.map(lambda x:x[1:])
      • 方式二:rename方法、columns参数
        • # ④暴力(好处:也可只修改特定的列) df.rename(columns=('$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'}, inplace=True)
        • # ⑤修改 df.rename(columns=lambda x:x.replace('$',''), inplace=True)
      • 删除列明中的特殊字符:df = df.rename(columns=lambda x: x.replace("'","").replace('"','')).replace(" ","")
    • 删除pandas DataFrame的某一/几列:
      • 方法一:直接del DF['column-name']
      • 方法二:采用drop方法,有下面三种等价的表达式:
        • 1. DF= DF.drop('column_name', 1);
        • 2. DF.drop('column_name',axis=1, inplace=True)
        • 3. DF.drop([DF.columns[[0,1, 3]]], axis=1,inplace=True)   # Note: zero indexed
    • pandas dataframe 根据特定值筛选行的方法
      • 1.筛选不包含0的行 data = data[~ data[’col‘].isin([0.0])]
      • 2.同时也可以作为筛选包含0的行 data = data[data[’col‘].isin([0.0])]
        • 也可以是任何其他数字或者字符串,并且支持list传入
      • 3.如果需要匹配的话 :data = data[data['col'].str.contains(str)]也可以用&多条件筛选

相关文章:

  • 2021-10-10
  • 2021-11-02
  • 2021-04-28
  • 2021-09-05
  • 2021-08-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-06
  • 2021-11-15
  • 2021-06-28
相关资源
相似解决方案