python数据处理常用操作:读写、pandas、nan、list、dict、循环和split/strip

1. 读写数据

平时用的比较多的,pandas和with open语句。

1.1 pandas

read_csv读取结构化数据,常用参数:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html
平时用的比较多的有header, columns, index_col以及sep和encoding。
df.to_csv写数据到本地,还可以写tsv,将sep参数修改一下即可。常用参数列表:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html
平时用的比较多的是index = None
比如:
df.to_csv('/Users/lixuefei/Desktop/dataset/glass_head.tsv', index = None,sep='\t', float_format = "%.2f")

1.2 with open 语句

f = open('test.txt', 'r')或者with open('/path/to/file', 'r') as f:
参数:r:read w:write a:add 追加

f.read()  # 一次性读取全部内容
f.write() # 通过write()函数向文件中写入一行。如果想要写入多行,加入\n即可。
f.close() # 关掉文件。一定要close掉,因为文件对象会占用操作系统的资源,而且操作系统同一时间能打开的文件数量也是有限的,另外如果不用close可能会导致write不成功。

例子:

with open('/path/to/file', 'r') as f:
    print(f.read())

除了read之外,还可以使用readline() 和readlines():

  • 调用read()会一次性读取文件的全部内容,如果是大文件就会导致内存占用过满。可以反复调用read(size)方法,每次最多读取size个字节的内容。
  • readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。
  • readlines()可以按行读取并写入一个list之中。
    总结:如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
for line in f.readlines():
    print(line)

2. 处理Nan值

Nan代表not a number。mathnumpy库都有isnan函数来判断,但是前提是待判断值是float。
当遇到object的时候,如果值本身type是str就很麻烦。
可以在pandas中使用函数fillna函数,一次替换掉所有Nan。
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html
例子:

df = pd.read_csv('test.csv')
df.fillna(0)#将所有Nan值设为0
df.fillna({'A':'empty'})#将A列的所有Nan值设为'empty'

3. DataFrame操作

DataFrame本质上是一种series,是pandas中的一种数据结构,具有行列结构,用起来非常方便。
df = pd.DataFrame

  • 增加一列:df["new_col"] = new_list
  • df.replace()可以使用正则表达式例如:
df.replace(".*[\u4e00-\u9fa5]{1,}.*",'0', regex=True, inplace = True)#替换所有含中文的字符串
df.replace("([0-9])\1{5}",'0', regex=True, inplace = True)#替换前六位是重复数字的字符串
  • df.drop(index = id, axis = 1) # id是行号

inplace = True是DataFrame中的函数常用的一个参数,在drop和replace中很常用。如果True代表就地改变,如果False则需要将结果返回并赋值成新的对象。

  • 各种统计函数包括count、sum、min、max、mode等等。比如:df['price'].sum()#价格列求和 。idxmax()和idxmin()可以输出最大最小值的行标号。
  • 另外,describe()函数可以输出各类统计值:
    比如:
    print(data.describe())
    #列出DataFrame的描述
    '''
    四分位数用于绘制箱线图判断是否为异常值
    count:该列(行)非NA值的个数
    mean :该列(行)的均值
    std  :该列(行)的方差
    25%  :上四分位数
    50%  :非NA值的平均数
    75%  :下四分位数
    max  :最大值
    '''
    '''
             a        b         c
    count  3.0  2.00000  2.000000
    mean   2.0  6.50000  6.000000
    std    1.0  2.12132  4.242641
    min    1.0  5.00000  3.000000
    25%    1.5  5.75000  4.500000
    50%    2.0  6.50000  6.000000
    75%    2.5  7.25000  7.500000
    max    3.0  8.00000  9.000000    
    '''
describe例子引用自:https://blog.csdn.net/sinat_29957455/article/details/78997244

4. list操作

list.reverse
list.sort
原地处理,没有返回值

5. dict操作

for key in dict:
val = dict[key]

6. 循环

for index, item in enumerate(list):

7.字符串拆分split() strip()

7.1 split,切分成新的数组

7.2 strip(’模式‘)去除左右的模式结构

参考链接:
https://www.cnblogs.com/ymjyqsx/p/6554817.html

你可能感兴趣的:(python学习,数据挖掘)