- 解决中文显示问题
- 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}!"
- 另外
- 1.%s-格式化
- 文件数据读取
- 一.读取纯文本
- 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')
- 1.读取csv格式
- 一.读取纯文本
- 数据查询
- 一.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),:]
- 一.Pandas查询数据的几种方法
- 推导式
- 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]
- multiples = [i for i in range(30) if i % 3 == 0]
- 行列操作
- 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(" ","")
- 方式一:columns属性
- 删除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)]也可以用&多条件筛选
- 1.添加行或列
相关文章: