python填坑小技巧 持续更新

文件导入

txt与csv文件读取为dataframe
利用pandas 里的read_table
1、读取txt,且重命名表头

import pandas as pd
df = pd.read_table('.../data.txt',names=['a','b','c'],header=None,encoding='utf-8').astype(str)

2、读取csv,且重命名表头,跳过第一行(原表头)

datacol = ['A','B','C']
train = pd.read_csv('data.csv',sep = ',', header=None, names = datacol, na_values='?',skiprows=1)

3、查询文件编码格式

data = pd.read_csv('data.csv')
data.dtypes

4、文件导出为csv

4_1不识别中文

data.to_csv('E:\\data\\data.csv', encoding='utf-8', index=False)

4_2识别中文

data.to_csv('E:\\data\\data.csv', encoding='utf_8_sig', index=False)

5、构造新列

data.eval('c = a*10000/b',inplace = True)

6、DataFrame数据抽取

##横向特定值,纵向特定列,reset_index为重排序列号
data1 = data[data['A']==11][['B','C','D']].reset_index(drop=True)

抽取包含特定值的行

df2002 = df1[df1['Year'].str.contains('2002')]

按数据类型抽取特定列

df1 = df.select_dtypes(include='object')   # 筛选object型变量
df2 = df.select_dtypes(include='category') # 筛选因子型变量

特定序列行分割

data1 = data[:50000] 
data2 =data[50000:100000] 
data3 = data[100000:] 

7、dataframe列表拼接

##axis=0 则为行后拼接,axis=1 则为列后拼接,按括号里从左到右为先后顺序
data = pd.concat([data1,data2,data3],axis=1)

8、dataframe列名更改
8_1全部重命名

data.columns = ['a','b','c','d','e']

8_2定向重命名

data.rename(columns={0:'a', 1:'b', 2:'c', 3:'d', 4:'e'}, inplace = True)

8_3列名批量加编码

#原列名(a,b,c,d,e)
data.rename(columns=lambda x:str(x)+'1', inplace=True)
#新列名(a1,b1,c1,d1,e1)

8_4获取行列名

df._stat_axis.values.tolist() # 行名称
 
df.columns.values.tolist() #列名称

9、删除特定列

原变量不删除列,新变量删除列
data1 = data.drop(['a','b'],axis=1)
原变量删除列
data1 = data.drop(['a','b'],axis=1,inplace = True)

10、object类型转换
object转换为str字符串

df1['Year'] = df1['Time'].astype(str)

特定列object转换为数字

df.iloc[:,[5,15,17]] = df.iloc[:,[5,15,17]].convert_objects(convert_numeric=True)

将列转换为日期格式

import pandas as pd
dataFile.report_date = pd.to_datetime(dataFile.report_date,format='%Y%m%d')

11、描述性统计函数

df.describe()

12、行/列计数 及统计缺失值

df.count() #按照列来数非缺失值的个数

df.count(axis=1) #按照行来数非缺失值的个数

df.shape[0] - df.count() #每列缺失值个数

13、dataframe列字符串特定字符替换

df["province"] = df["province"].str.replace('市', '')  #将provinc列中所有的”市“字替换为空

13、matplotlib画图
增加水平参考线

plt.axhline(2,color="red")

增加垂直参考线

plt.axvline(2,color="red")

14、进制转换

#############  十进制转其他进制  ############
 #十进制转二进制
bin(10)
>>>'0b1010'
 #十进制转八进制
oct(10)
>>>'0o12'
 #十进制转十六进制
hex(10)
>>>'0xa'

#############  其他进制转十进制  ############
 #二进制转十进制
x = "1111"
int(x,2) 
>>>15
 #八进制转十进制
x = "37"
int(x,8) 
>>>31
 #十六进制转十进制
x = "4a"
int(x,16) 
>>>74

你可能感兴趣的:(数据分析)