Python 數(shù)據(jù)初步探索和數(shù)據(jù)預(yù)處理

1 數(shù)據(jù)展示與文件讀寫

1.1 數(shù)據(jù)展示

  • 讀取.csv數(shù)據(jù)
import pandas as pd
df = pd.read_csv('loandata.csv')
df
數(shù)據(jù)讀取.png
  • 展示部分?jǐn)?shù)據(jù):三種方式
df.head(n)  #展示前n個(gè)樣本葱弟,n默認(rèn)為5
df.tail(n) #展示末尾n個(gè)樣本
df.sample() #從數(shù)據(jù)中隨機(jī)采樣n個(gè)樣本

其他讀取不同文件格式的接口


讀取不同文件格式.png
  • 相關(guān)讀寫函數(shù)將數(shù)據(jù)化為DataFrame的一些技術(shù):
  1. 不規(guī)整數(shù)據(jù)就處理:在讀取數(shù)據(jù)文件時(shí)跳過一些行幌缝、頁(yè)腳补憾、注釋等献汗。
  2. 日期解析:組合功能泊藕,如將多個(gè)列的日期信息合并為一列已骇。
  3. 索引:讀取文件時(shí)闭翩,選擇是否從文件中讀取列名。
  4. 類型推斷和數(shù)據(jù)轉(zhuǎn)換:包括用戶定義值的轉(zhuǎn)換浸船、缺失值等妄迁。
  5. 迭代:支持對(duì)大文件逐塊迭代。
  • 參數(shù)設(shè)定
fixed_df = pd.read_csv('loandata_chi.csv', sep=';', encoding='gbk’,
                                      parse_dates=['...'], index_col='...')

filepath_or_buffer : str糟袁,pathlib判族。str, pathlib.Path, py._path.local.LocalPath or any object with a read() method (such as a file handle or StringIO)
可以是URL躺盛,可用URL類型包括:http, ftp, s3和文件项戴。對(duì)于多文件正在準(zhǔn)備中
sep : str, default ‘,’
指定分隔符。如果不指定參數(shù)槽惫,則會(huì)嘗試使用逗號(hào)分隔周叮。分隔符長(zhǎng)于一個(gè)字符并且不是‘\s+’,將使用python的語法分析器。并且忽略數(shù)據(jù)中的逗號(hào)界斜。正則表達(dá)式例子:'\r\t'

delimiter : str, default None
定界符仿耽,備選分隔符(如果指定該參數(shù),則sep參數(shù)失效)

delim_whitespace : boolean, default False.
指定空格(例如’ ‘或者’ ‘)是否作為分隔符使用各薇,等效于設(shè)定sep='\s+'项贺。如果這個(gè)參數(shù)設(shè)定為Ture那么delimiter 參數(shù)失效。
header : int or list of ints, default ‘infer’
指定行數(shù)用來作為列名峭判,數(shù)據(jù)開始行數(shù)开缎。如果文件中沒有列名,則默認(rèn)為0林螃,否則設(shè)置為None奕删。如果明確設(shè)定header=0 就會(huì)替換掉原來存在列名。header參數(shù)可以是一個(gè)list例如:[0,1,3]疗认,這個(gè)list表示將文件中的這些行作為列標(biāo)題(意味著每一列有多個(gè)標(biāo)題)完残,介于中間的行將被忽略掉(例如本例中的2伏钠;本例中的數(shù)據(jù)1,2,4行將被作為多級(jí)標(biāo)題出現(xiàn),第3行數(shù)據(jù)將被丟棄谨设,dataframe的數(shù)據(jù)從第5行開始熟掂。)。
注意:如果skip_blank_lines=True 那么header參數(shù)忽略注釋行和空行扎拣,所以header=0表示第一行數(shù)據(jù)而不是文件的第一行打掘。

names: array-like, default None

用于結(jié)果的列名列表,如果數(shù)據(jù)文件中沒有列標(biāo)題行鹏秋,就需要執(zhí)行header=None尊蚁。默認(rèn)列表中不能出現(xiàn)重復(fù),除非設(shè)定參數(shù)mangle_dupe_cols=True侣夷。

index_col : int or sequence or False, default None

用作行索引的列編號(hào)或者列名横朋,如果給定一個(gè)序列則有多個(gè)行索引。

如果文件不規(guī)則百拓,行尾有分隔符琴锭,則可以設(shè)定index_col=False 來是的pandas不適用第一列作為行索引。

usecols : array-like, default None

返回一個(gè)數(shù)據(jù)子集衙传,該列表中的值必須可以對(duì)應(yīng)到文件中的位置(數(shù)字可以對(duì)應(yīng)到指定的列)或者是字符傳為文件中的列名决帖。例如:usecols有效參數(shù)可能是 [0,1,2]或者是 [‘foo’, ‘bar’, ‘baz’]。使用這個(gè)參數(shù)可以加快加載速度并降低內(nèi)存消耗蓖捶。

as_recarray : boolean, default False

不贊成使用:該參數(shù)會(huì)在未來版本移除地回。請(qǐng)使用pd.read_csv(...).to_records()替代。

返回一個(gè)Numpy的recarray來替代DataFrame俊鱼。如果該參數(shù)設(shè)定為True刻像。將會(huì)優(yōu)先squeeze參數(shù)使用。并且行索引將不再可用并闲,索引列也將被忽略细睡。

squeeze: boolean, default False

如果文件值包含一列,則返回一個(gè)Series

prefix: str, default None

在沒有列標(biāo)題時(shí)帝火,給列添加前綴溜徙。例如:添加‘X’ 成為 X0, X1, ...

mangle_dupe_cols: boolean, default True

重復(fù)的列,將‘X’...’X’表示為‘X.0’...’X.N’犀填。如果設(shè)定為false則會(huì)將所有重名列覆蓋蠢壹。

dtype : Type name or dict of column -> type, default None

每列數(shù)據(jù)的數(shù)據(jù)類型。例如 {‘a(chǎn)’: np.float64, ‘b’: np.int32}

engine: {‘c’, ‘python’}, optional

Parser engine to use. The C engine is faster while the python engine is currently more feature-complete.

使用的分析引擎宏浩≈校可以選擇C或者是python。C引擎快但是Python引擎功能更加完備。

converters : dict, default None

列轉(zhuǎn)換函數(shù)的字典求妹。key可以是列名或者列的序號(hào)乏盐。

true_values : list, default None

Values to consider as True

false_values : list, default None

Values to consider as False

skipinitialspace: boolean, default False

忽略分隔符后的空白(默認(rèn)為False,即不忽略).

skiprows : list-like or integer, default None

需要忽略的行數(shù)(從文件開始處算起)制恍,或需要跳過的行號(hào)列表(從0開始)父能。

skipfooter : int, default 0

從文件尾部開始忽略。 (c引擎不支持)

skip_footer : int, default 0

不推薦使用:建議使用skipfooter 净神,功能一樣何吝。

nrows : int, default None

需要讀取的行數(shù)(從文件頭開始算起)。

na_values : scalar, str, list-like, or dict, default None

一組用于替換NA/NaN的值鹃唯。如果傳參爱榕,需要制定特定列的空值。默認(rèn)為‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘nan’`.

keep_default_na: bool, default True

如果指定na_values參數(shù)坡慌,并且keep_default_na=False黔酥,那么默認(rèn)的NaN將被覆蓋,否則添加洪橘。

na_filter: boolean, default True

是否檢查丟失值(空字符串或者是空值)跪者。對(duì)于大文件來說數(shù)據(jù)集中沒有空值,設(shè)定na_filter=False可以提升讀取速度熄求。

verbose : boolean, default False

是否打印各種解析器的輸出信息渣玲,例如:“非數(shù)值列中缺失值的數(shù)量”等。

skip_blank_lines : boolean, default True

如果為True弟晚,則跳過空行忘衍;否則記為NaN。

parse_dates: boolean or list of ints or names or list of lists or dict, default False

  • boolean. True -> 解析索引
  • list of ints or names. e.g. If [1, 2, 3] -> 解析1,2,3列的值作為獨(dú)立的日期列指巡;
  • list of lists. e.g. If [[1, 3]] -> 合并1,3列作為一個(gè)日期列使用
  • dict, e.g. {‘foo’ : [1, 3]} -> 將1,3列合并淑履,并給合并后的列起名為"foo"

infer_datetime_format : boolean, default False

如果設(shè)定為True并且parse_dates 可用隶垮,那么pandas將嘗試轉(zhuǎn)換為日期類型藻雪,如果可以轉(zhuǎn)換证杭,轉(zhuǎn)換方法并解析扣孟。在某些情況下會(huì)快5~10倍。

keep_date_col: boolean, default False

如果連接多列解析日期粗蔚,則保持參與連接的列蹋偏。默認(rèn)為False便斥。

date_parser : function, default None

用于解析日期的函數(shù),默認(rèn)使用dateutil.parser.parser來做轉(zhuǎn)換威始。Pandas嘗試使用三種不同的方式解析枢纠,如果遇到問題則使用下一種方式。

1.使用一個(gè)或者多個(gè)arrays(由parse_dates指定)作為參數(shù)黎棠;

2.連接指定多列字符串作為一個(gè)列作為參數(shù)晋渺;

3.每行調(diào)用一次date_parser函數(shù)來解析一個(gè)或者多個(gè)字符串(由parse_dates指定)作為參數(shù)镰绎。

dayfirst: boolean, default False

DD/MM格式的日期類型

iterator: boolean, default False

返回一個(gè)TextFileReader 對(duì)象,以便逐塊處理文件木西。

chunksize : int, default None (用于分塊讀瘸肫堋)

文件塊的大小, See IO Tools docs for more informationon iterator and chunksize.

compression : {‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}, default ‘infer’

直接使用磁盤上的壓縮文件八千。如果使用infer參數(shù)吗讶,則使用 gzip, bz2, zip或者解壓文件名中以‘.gz’, ‘.bz2’, ‘.zip’, or ‘xz’這些為后綴的文件,否則不解壓恋捆。如果使用zip照皆,那么ZIP包中必須只包含一個(gè)文件。設(shè)置為None則不解壓沸停。

新版本0.18.1版本支持zip和xz解壓

thousands : str, default None

千分位分割符纵寝,如“,”或者“."

decimal : str, default ‘.’

字符中的小數(shù)點(diǎn) (例如:歐洲數(shù)據(jù)使用’星立,‘).

float_precision : string, default None

Specifies which converter the C engine should use for floating-point values. The options are None for the ordinary converter, high for the high-precision converter, and round_trip for the round-trip converter.

lineterminator: str (length 1), default None

行分割符爽茴,只在C解析器下使用。

quotechar: str (length 1), optional

引號(hào)绰垂,用作標(biāo)識(shí)開始和解釋的字符室奏,引號(hào)內(nèi)的分割符將被忽略。

quoting : int or csv.QUOTE_* instance, default 0

控制csv中的引號(hào)常量劲装‰誓可選 QUOTE_MINIMAL (0), QUOTE_ALL (1), QUOTE_NONNUMERIC (2) or QUOTE_NONE (3)

doublequote : boolean, default True

雙引號(hào),當(dāng)單引號(hào)已經(jīng)被定義占业,并且quoting 參數(shù)不是QUOTE_NONE的時(shí)候绒怨,使用雙引號(hào)表示引號(hào)內(nèi)的元素作為一個(gè)元素使用。

escapechar : str (length 1), default None

當(dāng)quoting 為QUOTE_NONE時(shí)谦疾,指定一個(gè)字符使的不受分隔符限值南蹂。

comment : str, default None

標(biāo)識(shí)著多余的行不被解析。如果該字符出現(xiàn)在行首念恍,這一行將被全部忽略六剥。這個(gè)參數(shù)只能是一個(gè)字符,空行(就像skip_blank_lines=True)注釋行被header和skiprows忽略一樣峰伙。例如如果指定comment='#' 解析‘#empty\na,b,c\n1,2,3’ 以header=0 那么返回結(jié)果將是以’a,b,c'作為header疗疟。

encoding : str, default None

指定字符集類型,通常指定為'utf-8'. List of Python standard encodings

dialect : str or csv.Dialect instance, default None

如果沒有指定特定的語言瞳氓,如果sep大于一個(gè)字符則忽略策彤。具體查看csv.Dialect 文檔

tupleize_cols : boolean, default False

Leave a list of tuples on columns as is (default is to convert to a Multi Index on the columns)

error_bad_lines : boolean, default True

如果一行包含太多的列,那么默認(rèn)不會(huì)返回DataFrame ,如果設(shè)置成false店诗,那么會(huì)將改行剔除(只能在C解析器下使用)叽赊。

warn_bad_lines : boolean, default True

如果error_bad_lines =False,并且warn_bad_lines =True 那么所有的“bad lines”將會(huì)被輸出(只能在C解析器下使用)必搞。

low_memory: boolean, default True

分塊加載到內(nèi)存必指,再低內(nèi)存消耗中解析。但是可能出現(xiàn)類型混淆恕洲。確保類型不被混淆需要設(shè)置為False塔橡。或者使用dtype 參數(shù)指定類型霜第。注意使用chunksize 或者iterator 參數(shù)分塊讀入會(huì)將整個(gè)文件讀入到一個(gè)Dataframe葛家,而忽略類型(只能在C解析器中有效)

如果整數(shù)列被壓縮(i.e. compact_ints=True),指定被壓縮的列是有符號(hào)還是無符號(hào)的泌类。

memory_map : boolean, default False

如果使用的文件在內(nèi)存內(nèi)癞谒,那么直接map文件使用。使用這種方式可以避免文件再次進(jìn)行IO操作刃榨。

  • 讀取任一大小的塊
df = pd.read_csv('loandata.csv', iterator=True)
df.get_chunk(4)

1.2 文件讀寫

讀取loandata.csv文件弹砚,將得到的數(shù)據(jù)存為loandata3.csv

df = pd.read_csv('loandata.csv', nrows=3)
df.to_csv('loandata_3.csv’)

輸出時(shí)可以使用sys.stdout把最終存在文件中的內(nèi)容打印出來輸出在屏幕上。

import sys
df.to_csv(sys.stdout)

此時(shí)的輸出結(jié)果會(huì)將位置也存入文件枢希,這除非在索引列示自定義的情況下都是不必要的

  • 制定grade為索引列
df = pd.read_csv('loandata.csv', nrows=3, index_col='grade')
df.to_csv(sys.stdout)
  • 一般情況,設(shè)置index=False
df = pd.read_csv('loandata.csv', nrows=3)
df.to_csv(sys.stdout, index=False)
  • Excel文件讀寫
    Excel文件一般使用制表符分隔列桌吃,可能存在多個(gè)工作表(sheet)。
    分別使用read_excel()和to_excel()讀寫苞轿,但注意需要設(shè)置sheetname茅诱。
  • 把loandata數(shù)據(jù)存在一個(gè)Excel文件的不同sheet中
import pandas as pd
pd.set_option('display.max_rows', 4)
pd.read_excel('loandata.xls', sheet_name='first')
  • 如果sheet_name包含多個(gè)sheet,讀取操作將返回一個(gè)有序詞典OrderedDict搬卒,每個(gè)sheet的數(shù)據(jù)可以通過字典索引方式得到瑟俭。
df = pd.read_excel('loandata.xls’,
sheet_name=['first', 'second'])
df['second']

2 數(shù)據(jù)類型和數(shù)據(jù)篩選

2.1 數(shù)據(jù)類型

Pandas對(duì)象數(shù)據(jù)類型=Python數(shù)據(jù)類型+Numpy數(shù)據(jù)類型:
float,int,bool,datetime64[ns],datetime64[ns,tz],timedelta[ns],category,object

  • 數(shù)值型數(shù)據(jù)類型:類型名,加上一個(gè)表示元素位長(zhǎng)的數(shù)字契邀。
    -當(dāng)Series只有字符串有多個(gè)數(shù)據(jù)類型時(shí)摆寄,dtype是object類型。
  • DF的dtypes屬性蹂安,可以得到各個(gè)特征的數(shù)據(jù)類型椭迎。
sample.dtypes
  • astype()轉(zhuǎn)換數(shù)據(jù)類型
sample['G'] = sample['G'].astype('int32')
sample = sample.astype({'B':'int8', 'G':'int32'}) # 對(duì)多列進(jìn)行轉(zhuǎn)換,采用字典-列名:目標(biāo)數(shù)據(jù)類型

2.2 數(shù)據(jù)篩選

  • select_dtypes()篩選特定數(shù)據(jù)類型的特征田盈。
  • 兩個(gè)參數(shù):exclude:剔除的;include:選取的
select_dtypes(include=None, exclude=None) # 如果有缴阎,就輸入一個(gè)list

3 描述性匯總統(tǒng)計(jì)

3.1 描述性統(tǒng)計(jì)

參數(shù)axis允瞧,默認(rèn)axis=0對(duì)索引index進(jìn)行操作(即操作后左邊那一列變化),axis=1表示對(duì)列columns進(jìn)行操作(即操作后上面那一行變化)。

df = pd.read_csv('loandata.csv')
df.mean(0) # 可以省略為df.mean()
df.mean(1)[:5] #計(jì)算前5個(gè)樣本的所有數(shù)值型特征的均值
  • 驗(yàn)證
df_number = df.select_dtypes(include='number')
df_number.head(1)
df0 = df_number.iloc[0]
df0.mean()
  • 使用df.count()查看非缺失值樣本的數(shù)量


3.2 匯總統(tǒng)計(jì)

  • describe()方法查看均值述暂、標(biāo)準(zhǔn)差痹升、最大值、最小值畦韭、分位數(shù)疼蛾。也可以對(duì)非數(shù)值型進(jìn)行統(tǒng)計(jì),但指標(biāo)有所不同艺配。默認(rèn)只對(duì)數(shù)值型察郁。可以使用include和exclude方法转唉∑つ疲可以傳入'all'表示所有。
  • percentiles參數(shù)顯示哪幾個(gè)分位數(shù)
df.describe(percentiles=[.05, .5, .95])
  • info()顯示各列數(shù)據(jù)類型赠法、非空值數(shù)量麦轰、總體樣本數(shù)和所占內(nèi)存。
  • cov()和corr()表示協(xié)方差和相關(guān)系數(shù)砖织。

4 算術(shù)運(yùn)算

  • Pandas對(duì)象進(jìn)行加減乘除二元運(yùn)算時(shí)款侵,根據(jù)索引自動(dòng)對(duì)齊數(shù)據(jù),存在不同索引對(duì)時(shí)取并集侧纯。不重疊的索引處引入缺失值并且在運(yùn)算過程中自動(dòng)傳播喳坠。
  • +-*/可以用add()、sub()茂蚓、mul()壕鹉、div()代替。是對(duì)應(yīng)元素相乘而不是矩陣乘法聋涨。
  • DataFrame和Series運(yùn)算時(shí)晾浴,存在廣播行為,可理解為一種匹配行為
  • 算術(shù)運(yùn)算默認(rèn)axis=1.

5 缺失值處理

  • 通常用NA(Not available)代指牍白,在Pandas數(shù)據(jù)結(jié)構(gòu)用NaN(Not a Number)脊凰。可以用isnull()分析茂腥。
  • True和 False在進(jìn)行算術(shù)運(yùn)算時(shí)視為1和0.
  • 缺失值填補(bǔ)fillna()
  1. 使用同一個(gè)值填補(bǔ)
df.fillna(0)
  1. 使用前一個(gè)值(前向填補(bǔ))或后一個(gè)值(后向填補(bǔ))狸涌,設(shè)置method。
df.fillna(method='ffill') # pad,前向填補(bǔ)
df.fillna(method='bfill') # backfill,后向填補(bǔ)
  1. 不同列不同值填補(bǔ)最岗,輸入字典
df.fillna({'one':0,'three':1})
  1. 使用一個(gè)Pandas對(duì)象進(jìn)行填補(bǔ)
df.fillna(df.mean())

6 索引調(diào)整方法

  • 更改index(左邊那列)
df.index = [ 'a' , 'b' , 'c' ]
  • reindex() :重新索引并得到一個(gè)新的Pandas對(duì)象帕胆。不僅重新索引DataFrame,同時(shí)也實(shí)現(xiàn)過濾功能般渡。
df.reindex(['b', 'c', 'e'])
df.reindex(columns=['two', 'three', 'four'])
  • 如果使用某一列作為索引懒豹,使用set_index()
df.set_index('two')
  • 修改索引或列名芙盘,使用rename()
df.rename({'a':'A', 'b':'B', 'c':'C'})
df.rename(columns=str.upper)
df.rename(columns=lambda x:x[:2].upper()+x[2:].lower())

7 層次化索引

  • 使用列表創(chuàng)建有多級(jí)別索引的Series
data = pd.Series(np.random.randn(5),index=[['a', 'a', 'b', 'b', 'b'],['a1', 'a2', 'b1', 'b2', 'b3']])
data.index
# MultiIndex(levels=[['a', 'b'], ['a1', 'a2', 'b1', 'b2', 'b3']],labels=[[0, 0, 1, 1, 1], [0, 1, 2, 3, 4]])
  • 索引是MultiIndex對(duì)象,levels包含每個(gè)級(jí)別索引的標(biāo)簽脸秽,labels每個(gè)數(shù)據(jù)在不同leels的位置標(biāo)記儒老。對(duì)每個(gè)數(shù)據(jù)而言,索引是個(gè)元組记餐。
tuples = [('a', 'a1'), ('a', 'a2'), ('b', 'b1'), ('b', 'b2'), ('b', 'b3')]
pd.Series(np.random.randn(5), index=tuples)
  • 創(chuàng)建一個(gè)層次化索引:
    pd.MultiIndex.from_arrays(arrays)
    pd.MultiIndex.from_tuples(tuples)
    pd.MultiIndex.from_product(iterable)
arrays = np.array([['a', 'a', 'a', 'b', 'b', 'b'], ['x', 'y', 'z', 'x', 'y', 'z']])
tuples = [('a', 'x'), ('a', 'y'), ('a', 'z'), ('b', 'x'), ('b', 'y'), ('b', 'z')]
iterable = [['a', 'b'], ['x', 'y', 'z']]
#MultiIndex(levels=[['a', 'b'], ['x', 'y', 'z']],labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])
index = pd.MultiIndex.from_product(iterable)
data = pd.Series(np.random.randn(6), index=index)
data.index.names = ['first', 'second']
data.index
#MultiIndex(levels=[['a', 'b'], ['x', 'y', 'z']],labels=[[0, 0, 0, 1, 1, 1],[0, 1, 2, 0, 1, 2]],names=['first', 'second'])
  • DF
  • 重排級(jí)別順序
df.swaplevel(0,1,axis=1)
df.reorder_levels([1,0],axis=1)
  • 提取部分?jǐn)?shù)據(jù):使用.loc()和.iloc()驮樊,首先通過.loc(axis)制定對(duì)行索引還是對(duì)列索引
df.loc(axis=0)[:,'x']
  • 對(duì)任意級(jí)別,用xs()方法
df.xs('x',level=1,axis=0)
  • stack()和unstack()
    stack():上到左片酝,unstack():左到上
  • reset_index()重置層級(jí)索引囚衔,提取index級(jí)別level放入columns級(jí)別col_level
df.reset_index(level=1,col_level=1)

(根據(jù)《Python數(shù)據(jù)分析基礎(chǔ)》整理)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钠怯,隨后出現(xiàn)的幾起案子佳魔,更是在濱河造成了極大的恐慌,老刑警劉巖晦炊,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞠鲜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡断国,警方通過查閱死者的電腦和手機(jī)贤姆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稳衬,“玉大人霞捡,你說我怎么就攤上這事”【危” “怎么了碧信?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)街夭。 經(jīng)常有香客問我砰碴,道長(zhǎng),這世上最難降的妖魔是什么板丽? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任呈枉,我火速辦了婚禮,結(jié)果婚禮上埃碱,老公的妹妹穿的比我還像新娘猖辫。我一直安慰自己,他們只是感情好砚殿,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布啃憎。 她就那樣靜靜地躺著,像睡著了一般瓮具。 火紅的嫁衣襯著肌膚如雪荧飞。 梳的紋絲不亂的頭發(fā)上凡人,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天名党,我揣著相機(jī)與錄音叹阔,去河邊找鬼。 笑死传睹,一個(gè)胖子當(dāng)著我的面吹牛耳幢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欧啤,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼睛藻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了邢隧?” 一聲冷哼從身側(cè)響起店印,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倒慧,沒想到半個(gè)月后按摘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纫谅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年炫贤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片付秕。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兰珍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出询吴,到底是詐尸還是另有隱情掠河,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布猛计,位于F島的核電站唠摹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏有滑。R本人自食惡果不足惜跃闹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毛好。 院中可真熱鬧望艺,春花似錦、人聲如沸肌访。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吼驶。三九已至惩激,卻和暖如春店煞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背风钻。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工顷蟀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骡技。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓鸣个,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親布朦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子囤萤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容