python Pandas庫使用總結


pandas是一個強大的python庫,一定程度上方便表格讀寫和數據的解析合並處理

在這主要記錄下日常經常使用的一些pandas方法和踩到的坑

pandas安裝&使用
pip install pandas

import pandas as pd

1、pandas.read_csv('csv')
讀取.csv文件,輸出DataFrame

可指定讀取列
pandas.read_csv('csv', usecols=[0,1]) 讀取序列外的第一和第二列

dataframe.iloc[:6] 讀取前5行

2、pandas.DataFrame(dict, index=[0])
將dict轉為DataFrame輸出
index=[0]是指索引從0開始,可自定義

3、dataframe.set_index('columns', drop=False, inplace=True)
將colunms列設置為新的序列,方便將colunms作為key轉dict
當drop=False,inplace=True,colunms列仍保留

dataframe.reset_index(drop=True, inplace=False)
可以將更新序列的dataframe還原

4、刪除包含NaN的行或列

axis=0 指對行操作
axis=1 指對列操作
dataframe.dropna(axis=0, how='any')

針對指定列
df.dropna(subset=[columns], axis=0)

5、dataframe[['columns']] = dataframe[['columns']].astype('float')
將columns列類型轉換為float

6、dataframe.rename(columns={'c':'test_c'})
轉換列名

7、dataframe合並

dataframe_a.merge(dataframe_b, how='left', left_on='c', right_on='c')


注:指定merge的left_on和right_on columns必須類型一致,否則merg數據異常

8、dataframe轉dict
dataframe.to_dict('index')

dataframe.to_dict()

dataframe.to_dict('list')

根據實際需要使用

9、當columns出現多對多轉dict時

dataframe.groupby('colunms').apply(lambda x:x.to_dict('r')).to_dict()
columns是作為key的那一列
沒有合適數據不做演示

10、刪除某特性值的行
dataframe[~dataframe['columns'].isin(['None'])]


取反思路
或:

"""
刪除值為0的行
"""
df.drop(df[df[columns]==0].index, inplace=True)

11、DataFrame list行擴展成多行

""" 只能對兩列的DataFrame進行列擴展 """
import numpy as np
new_value = np.dstack(np.repeat(dataframe.columns[0].values, list(map(len, dataframe.columns[1].values))), np.concatenate(d.columns[1].values))
pd.DataFrame(data=nv[0], columns=d.columns)
或:
"""
建議使用該方法,可對3列以上的DataFrame擴展
"""
import pandas as pd
import numpy as np

row_len = list(map(len, df[columns].values))
rows = list()
for c in df.columns:
    if c == columns:
        row = np.concatenate(df[c].values)
    else:
        row = np.repeat(df[c].values, row_len)
    rows.append(row)
new_df = pd.DataFrame(np.dstack(tuple(rows))[0], columns=df.columns)

12、查詢符合條件數據

dataframe.query('columns[0] in {}'.format(rules))

13、根據相同值合並

dataframe.columns[1] = dataframe.columns[1].astype('str')
dataframe.groupby('fda_appl_no').apply(lambda s: [','.join(s[dataframe.columns[1]])])
dataframe.columns[1].apply(lambda s: s.split(','))

14、DataFrame去重

df.drop_duplicates()

15、更換列位置

df.loc[:, [columns1, columns0]]

image

16、針對某列進行排序

df.sort_values(by=columns)

image

17、填充NaN

"""
使用0填充NaN
"""
df.fillna(0)

image

18、將兩列合並成新的一列

"""
sep指定分隔符,默認空
"""
df[new_columns] = df[columns0].map(str).str.cat(df[columns1].map(str), sep=',')
注:合並的兩列不是str需轉str

image

19、指定列函數操作

"""
apply提供了應用在行列的方法
"""
DataFrame.apply(self, func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)[source]

df[columns] = df.columns[columns].apply(lambda s: s.split(','))

image


更新中



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM